iFrame Click事件未被触发

时间:2013-02-23 02:09:02

标签: iframe jquery

如何使用JQuery捕获iframe的点击次数。我有一个亚马逊横幅,我需要在用户点击iframe时关闭其容器DIV。我试过'内容',点击iframe,绑定事件但没有任何作用。当我点击iframe时,它会在另一个标签上打开亚马逊的页面,但点击事件永远不会触发。我提出了一个断点和警报,以确保。

我正在使用最新的JQuery 1.9版并在Chrome上进行测试。我还想过捕获全局点击($(文档).click)并检查点击区域,但是当我点击iframe时,$(文档).click不会触发。有什么建议吗?

同样,它是一个亚马逊横幅iframe,它托管在亚马逊而不是我的服务器上。

不起作用的常规绑定示例:http://jsbin.com/oyanis/4/edit

1 个答案:

答案 0 :(得分:4)

有一个巧妙的技巧来点击iframe内容。

你可以这样做:

<div id="iframeinside">
    <iframe />
</div>

现在可以在js中说:

 var oldActive = document.activeElement; /* getting active Element */
 var frame = $('#iframeinside iframe')[0];
 $('#iframeinside').mouseenter(function() {
      /* Setting interval to 1ms for getting eventually x,y mouse coords*/
      oldActive = document.activeElement;
      setInterval('doSomething()', 1); 
 });

 $('#iframeinside').mouseleave(function () {
      /* clear interval cause we arent over the element anymore*/
      clearInterval(intervalId); 
 });

这些时间间隔会调用:

function doSomething() {
    /* if the focus has changed to the iframe */
    if(oldActive != frame && document.activeElement == frame) {
        oldActive = document.activeElement;
        alert(myQuery);
        alert('click did happen to the iframe');
    }
}

我把它用于了几件事,它总是奏效。我没有检查的是ie6,7和兄弟。