4

如何使用 JQuery 捕获对 iframe 的点击。我有一个亚马逊横幅,当用户单击 iframe 时,我需要关闭其容器 DIV。我试过'内容',点击iframe,绑定事件但没有任何效果。当我单击 iframe 时,它​​会在另一个选项卡上打开亚马逊的页面,但单击事件永远不会触发。我设置了一个断点并发出警报以确保。

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

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

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

4

1 回答 1

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和哥哥怎么样。

于 2013-02-23T03:43:34.997 回答