2015-08-26 110 views
1

计数点击iframe中

jQuery(document).ready(function (e) { 
 
    focus(); 
 
    var listener = addEventListener('blur', function() { 
 
     if(document.activeElement === document.getElementById('my_iFrame')) { 
 
      console.log("clicked!"); 
 
     } 
 
     removeEventListener(listener); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<iframe src="http://example.com" id="my_iFrame"></iframe>

此代码只计算一次点击。如何计算更多的点击次数?

谢谢!

+0

“点击”印多次在我的控制台 – kiranvj

+1

这似乎是你打算工作。你确定你点击了点击之外的iframe吗?为了启动'''blur'''处理程序,您需要先将焦点恢复到父文档。 – benjarwar

+0

[将点击事件添加到iframe]的可能重复(http://stackoverflow.com/questions/15080222/add-click-event-to-iframe) – benjarwar

回答

1

@benjarwar在他的两个评论中都是正确的,但是我认为下面的解决方案比另一篇文章中建议的更优雅,但是作为一个超过1年没有活动的帖子,我会在这里发布解决方案。

只要你有权访问iframe和父框架代码,这将工作跨域。

假设您将在父级和iframe中都使用jQuery!

在iframe添加:

$("html").on("click",function(){ 
parent.postMessage("click", "*"); 
}); 

在您添加父:

window.addEventListener("message", function(event) { 
if (event.data=="click") 
//above if only added to be sure you are not getting some other messages post to you parent page. 
    { console.log("clicked!"); } 
}); 
+0

我没有在iframe中使用acces。 Iframe包含例如:bing.com,example.com,...。 – bushpop

+0

不幸的是,如果iframe不在相同的域上,或者您无法访问它的源代码,则无法与iframe交互。 –