2016-10-18 55 views
0

我在想这是无辜的问题,但我真的不知道答案还没有。事件冒泡没有发生在IFrame

我们都知道,事件冒泡将事件引导到其预期的目标,它的工作原理如下:单击按钮并将事件指向按钮。如果为该对象设置了事件处理程序,则会触发该事件。如果没有为该对象设置事件处理程序,则该事件会冒泡(如水中的气泡)到对象父级。

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'标签时,为什么我没有收到警报(11111)? 为什么不举办事件冒泡,以及通过代码访问事件的方式是什么?

还引用了Fiddle link

+0

这是同源策略的结果是,你不能用代码另一个域,除非它地同意沟通,甚至那么它的消息传递。 –

+0

我的问题很清楚。当我尝试点击iframe'a'标签时,为什么我没有收到警报(11111)? –

回答