在iframe上捕获点击事件

时间:2019-11-14 12:49:00

标签: javascript reactjs events

我正在尝试做类似的事情

output[i * 3] = (float)(((val >> 16) & 0xFF)/255.0);
output[i * 3 + 1] = (float)(((val >> 8) & 0xFF)/255.0);
output[i * 3 + 2] = (float)((val  & 0xFF)/255.0);

不起作用。看起来iframe不允许这样做。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

这是完全正常的;如果事件在dom树中冒泡,则iframe拥有自己的dom树,因此不会在事件外部冒泡。

您的设置看起来如何? 如果您控制iframe中的内容,则可以使用帖子API在iframe和父级之间进行通信,请检查:

https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

如果您不控制它,则可能可以在父窗口上检测到模糊事件,而不是iframe上的click事件。

希望这会有所帮助

答案 1 :(得分:0)

无法从父页面读取iframe内容(DOM)。

有一个名为IframeTracker的jQuery插件。这应该可以解决您的问题。您可以查看GitHub页面以获取更多详细信息。

答案 2 :(得分:0)

如果您有权访问iframe并对其进行控制,则可以创建一个js文件并执行类似的操作,然后将其放在iframe和父窗口中:< / p>

(function() {
  if (window.location != window.parent.location) {
    window.document.addEventListener('click', window.parent.iframe_clicked);
  }
})();

function iframe_clicked(event) {
  console.log("wow, no kiddin!");
}

当然还有其他方法,例如通过设置服务器和ajax并通过网络进行此操作,这些方法都有自己的用途。

另外还有postMessage,其他人已经提到过,所以我将不作解释。