我正在开发一个网页代码,它从服务器动态获取内容,然后使用类似的方法将此内容放置到容器节点
container.innerHTML = content;
有时我必须覆盖此节点中以前的一些内容。这工作得很好,直到以前的内容占据了更多的垂直空间,然后新的内容占据了更多的垂直空间,并且用户向下滚动页面 - 滚动超过新内容允许的高度,只要其高度即可。
在这种情况下,页面重绘不正确——旧内容的一些痕迹仍然存在。它工作得很好,甚至可以通过最小化和恢复浏览器(或强制以其他方式重绘窗口)来消除工件,但这似乎不太方便。
我仅在 Safari 下进行测试(这是一个针对 iPhone 优化的网站)。
有人知道如何处理这个问题吗?
最佳答案
我发现的最简单的解决方案是放置一个 anchor 标记 <a>
在div
的顶部您正在编辑:
<a name="ajax-div"></a>
然后当你改变div
的内容时,您可以这样做让浏览器跳转到您的 anchor 标记:
location.hash = 'ajax-div';
使用它可以确保用户在更新内容时不会向下滚动太多,并且一开始就不应该遇到问题。
(在最新的 FF beta 和最新的 safari 中测试)
关于javascript - JavaScript 中的 insideHTML 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63743/