我遇到了一个困扰整个谷歌的问题,但提供的解决方案都没有正常工作。我假设这些解决方案中的大多数都没有考虑跨域。
我有一个网站,我想指导用户将(整页)IFrame 嵌入到他们的网站中。问题仅出现在某些版本的 Safari 上。IFrame 中的元素无法将自身滚动到视图中。
我注意到,如果我进行相同的域测试,IFrame 可以使用window.parent.scrollTo(0,element.top). 这有效,但不能跨域。另一个奇怪的事情是没有其他浏览器需要 window.parent 方法来滚动 IFrame,只有 Safari。所有其他浏览器都可以element.scrollIntoView()在 IFrame 中使用。请注意,我已经使用JavaScript 解决方法来取悦带有跨协议 IFrame 的 Safari。
我只在 IFrame 中的 Safari Mobile 上看到的另一个问题是,当向下滚动时,Bootstrap Modals 出现在 IFrame 的顶部。尽管如此,我确信如果我们可以正确设置滚动位置,我们也应该能够设置模态位置。
这是我尝试过的;
1. window.frames['IFrameName'].document.
getElementById("elmId").scrollIntoView();
Run Code Online (Sandbox Code Playgroud)
我最后的手段(我认为)是在我的 IFrame 中使用 postMessage 来通知父域设置框架的滚动位置。
在我看来,这个问题已经存在了很长时间。还有比这更好的方法吗?