IFrame中不会发生事件冒泡

8

我认为这是一个无辜的问题,但实际上我仍然不知道答案。

我们都知道事件冒泡会将事件引导到其预定目标,它的工作原理如下:当单击按钮时,事件会被引导到该按钮。如果该对象设置了事件处理程序,则触发事件。如果该对象未设置事件处理程序,则事件会向上冒泡(就像水中的气泡)到对象的父级。

HTML 部分

<div>
  <iframe>
    <a>Clickable fdf Area</a>
  </iframe>
</div>

Javascript部分

    $('div iframe').load(function(){
    var iframeBody = $(this).contents().find("body");
  iframeBody.html("<a href='www.google.com'>clickable area</a>");
  iframeBody.on("click", "a", function(){
    alert(22222);
  });
 document.getElementsByTagName("div")[0].addEventListener("click", function(event){
        alert(11111);
 }, true);

});
$('iframe').attr("src","JavaScript:'iframe content'");

我的问题很明确。 当我尝试点击iframe中的'a'标签时,为什么我没有收到alert(11111)? 为什么事件冒泡没有被触发,有哪些方法可以通过代码访问事件冒泡?

还请参考Fiddle链接


这是同源策略的结果,除非它同意并且即使如此也是通过消息传递,否则您无法与来自另一个域的代码进行通信。 - Benjamin Gruenbaum
我的问题很清楚。当我尝试点击iframe中的'a'标签时,为什么我没有收到警报(11111)? - Sudharsan S
1个回答

16

2
我们如何手动将事件传播到iframe中? - Eric

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接