首页 文章

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

提问于
浏览
9

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

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

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

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

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

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

2 回答

  • 0

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

  • 0

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

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

    href 链接用于状态栏,但由于最后的 return false; ,它实际上并不在任何地方 . 然后,你只需要在 someFunction(); 内进行重定向(在我的例子中,它是一个 document.formName.submit(); ) . 考虑到它,你可以做内联的所有事情,但除非你只有一件事要做,否则这似乎并不是很好的形式 .

    Note: 如果您的 someFunction(); 在最后有 return false; ,那么这将不足以阻止跳跃 .

相关问题