4

是否可以加载跨域子 iframe 并将其滚动到某个部分?

例如,我想在 Stack Overflow 上引用一个问题,然后使用 JavaScript 将其滚动到问题所在页面的特定部分,并可能覆盖一个突出显示或其他内容。

我的技巧是加载高度很大的 iframe,就像真的很高一样,然后通过移动位置来滚动它。

好烦啊,有没有更好的办法?

4

2 回答 2

0

如果 iframe 是从不同的源域加载的,那么您几乎无法与之交互。浏览器强制执行跨源安全性,不允许您直接操作 iframe 内容。如果您对加载到 iframe 中的内容有一些控制权,则可以使用postMessage函数。

postMessageAPI 似乎得到了很好的支持。您可以查看规范演示

这篇博客文章似乎很好地概述了解决问题的方法。

您仅设置 iframe 高度的技巧是一个有趣的想法,但是您必须知道它需要多长时间,因此只有在您了解要显示的内容的情况下它才会起作用。

于 2012-06-02T18:41:24.630 回答
0

一种方法是在 iframe 上设置一个负顶部,然后将其设置得比您需要的高。

例如,如果你想显示它滚动到100px,然后设置top:-100px并添加 100px 到高度。

然后,您只需要隐藏 iframe 的顶部,例如在屏幕顶部或其他元素下方(使用 z-index)。

这可能会与scrolling="no"iframe 元素结合使用。

于 2021-12-13T22:44:07.433 回答