通过滚动浏览器窗口来阻止iframe中的#anchor

时间:2011-10-12 22:22:16

标签: javascript html iframe

当页面加载带有以#结尾的网址的iframe时,父页面会滚动,以便iframe的正文位于浏览器窗口的顶部。

演示:http://jsfiddle.net/dTQEE/1/

如果网址以#结尾,例如http://foo.com#,浏览器假定您要转到页面顶部。

当加载带有哈希片段的iframe时,如何防止父窗口滚动?

Chrome中出现问题,不确定这是否是其他浏览器的问题。

现在我的最佳解决方案是使用el.addEventListener('scroll', ...)scrollTop重置为0,如果它还不是0.这样可行,但向下滚动和向上滚动都非常明显。

2 个答案:

答案 0 :(得分:0)

不确定这是否可行,但您应该尝试使用window.onhashchange事件并防止默认。如果没有,你将不得不剥离散列,如果它没有任何后跟。

答案 1 :(得分:0)

我知道这是一个老问题,但我在搜索同样的问题时遇到了它。我想出了一个在Chrome中为我精彩的解决方案。

<a href="dummylink.html" onclick="someFunction(); return false;">

href链接用于状态栏,但由于最后的return false;,它实际上并不在任何地方。然后,您只需在document.formName.submit();内进行重定向(在我的情况下,它是someFunction();)。不过想想它,你可以做一切内联,但除非你只有一件事要做,否则这看起来并不是很好。

注意:如果您的someFunction();最后有return false;,则不足以阻止跳跃。