如何防止 Google 幻灯片嵌入到 iframe 中以滚动父页面?

How can I prevent Google Slides embed in an iframe to scroll the parent page?

提问人:darksky 提问时间:5/26/2023 更新时间:5/26/2023 访问量:295

问:

我在页面中有以下 iframe(实际演示只是一个示例):

<div id="google-slides-iframe-container">
    <iframe id="google-slides-iframe" src="https://docs.google.com/presentation/d/1_zfj0xr6bOTZcGOPR4ASOVCccg5zvDrGrU3XxUUe5Ik/embed" frameborder="0"></iframe>
</div>

问题是当演示文稿未完全显示在视图中时,也就是说,假设用户向下滚动页面,以便演示文稿的一半可见,当用户单击按钮转到下一张幻灯片时,页面突然向上移动并滚动,以便演示文稿的顶部现在在视图中。然后,用户必须向下滚动才能再次到达按钮才能转到下一张幻灯片。对于演示文稿完全适合页面的大屏幕来说,这不是问题,但在较小的屏幕上,这种行为是有问题的。

如何防止 iframe 内的 Google 幻灯片文档在单击“下一个”和“上一个”按钮后向上滚动其父级?我今天做了一些研究,但根本没有成功。有一些非常骇人听闻的方法可以做到这一点,例如,跟踪鼠标,跟踪它何时进入和离开 iframe,以及当鼠标在 iframe 区域内时禁用页面滚动。但是,整个逻辑在平板电脑上就崩溃了,例如,当用户仅使用触摸手势与页面交互时。

我不确定 Google 是否正在使用 scrollIntoView API 来实现这一点。如果是,也许覆盖此功能的原型以完全禁用它是有意义的。我尝试在iframe及其容器上执行此操作,但效果不大。也许类似地覆盖函数也是有意义的。我还没有尝试过这个。scrollTop()

显然,这个问题是五年前在W3C上提出的,他们还没有对此做出回应。所以我找不到一种官方方法来防止 iframe 滚动他们的父级。

javascript html jquery css, iframe

评论

0赞 CBroe 5/26/2023
“[...]覆盖此函数的原型以完全禁用它。我尝试在 iframe 及其容器上执行此操作,但效果不大。- 您可以在页面的上下文中覆盖它 - 但不能覆盖加载到 iframe 中的文档的上下文,因为同源策略会阻止您从此处开始访问它。
0赞 darksky 5/31/2023
@CBroe这是一个很好的观点,可以解释为什么它没有影响。我还能尝试什么?
0赞 CBroe 5/31/2023
您无法通过 JavaScript 与从不同源加载的文档的内容进行交互。我认为您在这里无能为力,如果 Google 文档将自己滚动到顶部 - 在 iframe 中 - 那么这也会在父文档中将 iframe 滚动到视图中。

答: 暂无答案