使用扩展程序时,我想在其中发生特定事件时测量iframe(相对于顶部窗口)的偏移量。 这包括不同来源的iframe。
似乎需要两件事:
<iframe>
)并测量其偏移量我可以在所有可以捕获特定事件的iframe中运行内容脚本,但是我无法在具有不同来源的iframe中识别iframe的相应DOM元素,因为在这些情况下我被拒绝访问'window.frameElement ”。
有什么想法吗? 我可以查找一个'src'属性对应于'window.location.href'的元素,如iframe的content-script的上下文中所示,但'window.location.href'不是唯一的标识符。 ..还是会吗?
答案 0 :(得分:0)
您可以采取以下方法:
"all_frames":true
的{{1}}标志来执行所有框架中的内容脚本。"content_scripts"
事件侦听器。每当触发第3步中的事件时,请使用message
确定我们是否在顶部窗口内。
if (top === window)
将数据传递到父框架。第2步中的parent.postMessage({currentTotal: ... }, '*');
事件侦听器应检测此事件,处理它并重复第3步。我已经解释了如何处理这个问题。一个更有用的代码片段:您需要识别源帧。为此,我们使用message
对象的contentWindow
属性与事件对象的<iframe>
属性进行比较:
source
通过这些提示,您应该能够自己编写完整的代码。要测量偏移量,请使用getBoundingClientRect
方法。为了完整起见,我还提供了其他相关文档的链接:window.postMessage
,Content scripts (manifest)。