2015-08-26 72 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交互。 –