在iframe中使用location.hash可以滚动父窗口。

4
我有一个页面包含了一个iframe。在iframe内部的代码(我无法更改)将location.hash设置为iframe窗口中元素的id。
这会不良地影响我的浏览器窗口,导致窗口顶部接触到iframe上方。因为我在iframe上面有一个对我的应用程序至关重要的工具栏,所以这非常烦人。
有没有办法防止location.hash的设置影响主窗口的滚动位置? preventDefault能帮我解决这个问题吗?
编辑:看起来在我描述的方式下这并不是真正可能的。
2个回答

1
如果preventDefault()不起作用,你可以动态移动<a name='iframehash'>的位置,使其始终位于屏幕顶部。这样,当调用移动到任何哈希值时,实际上什么也不会移动。
但是,如果preventDefault()起作用,那么这是一个更好的解决方案。

谢谢,Jamie。我也尝试过这个方法。我在主HTML文件的顶部放置了一个锚点,并动态设置其名称为iframe中使用的锚点,但仍然没有帮助 :-( - Ben Clayton

0

谢谢 - 但我应该将其附加到哪个事件上呢? 我已经尝试过: window.onscroll = function(e){ e.preventDefault(); }; 在父窗口和iframe中都没有成功。 - Ben Clayton
iframe 是如何被调用的?如果可以的话,我会尝试在调用它的点击事件上设置 preventdefault。 - matpol
在 iframe 中的一些内部代码(与点击事件无关)调用 location.hash = "#" + id。我无法停止运行该行或 iframe 中的代码将会出错。 - Ben Clayton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接