相关疑难解决方法(0)

跨域 IFrame element.scrollIntoView() Safari 问题

我遇到了一个困扰整个谷歌的问题,但提供的解决方案都没有正常工作。我假设这些解决方案中的大多数都没有考虑跨域。

我有一个网站,我想指导用户将(整页)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)
  1. 偏移技巧
  2. 速度.js

我最后的手段(我认为)是在我的 IFrame 中使用 postMessage 来通知父域设置框架的滚动位置。

在我看来,这个问题已经存在了很长时间。还有比这更好的方法吗?

javascript safari iframe jquery

4
推荐指数
1
解决办法
3104
查看次数

标签 统计

iframe ×1

javascript ×1

jquery ×1

safari ×1