javascript - 父頁面監聽iframe中的事件問題
問題描述
始終無法監聽到,是什么原因?parent.html
<body> <iframe src='http://m.4tl426be.cn/wenda/son.html' frameborder='0'></iframe><script src='http://m.4tl426be.cn/wenda/jquery.js'></script><script> $(function(){$($(’#iframe’)[0].contentWindow).on(’dosomething’, function(){ alert(’接收到到iframe的事件’);}); });</script></body>
son.html
<body><h1>son</h1> <button id='button'>trigger</button><script src='http://m.4tl426be.cn/wenda/jquery.js'></script><script> $(function(){$(’#button’).on(’click’, function(){ $(window).trigger(’dosomething’);}); });</script></body>
謝謝!
Dont
剛才搜索時發現的,也不錯,兼容性可以MessengerJShttps://github.com/biqing/Mes...跨文檔通信解決方案
問題解答
回答1:son.html
$(function(){$(’#button’).on(’click’, function(){ window.parent.$(window).trigger(’dosomething’);}); });
事件是在父頁面的jquery里定義的,要觸發需要交由父頁面的jquery來負責觸發。
jquery源碼太久沒看了,找半天,沒找到對應的內容來說明。
回答2:頁面間通信可以使用 postMessage。
或者只在同一個頁面綁定和處理事件。
$(’#iframe’).contents().find(’#button’).on('click', function(){ $(window).trigger(’dosomething’);});回答3:
無法監聽到的原因是因為父頁面通過on方法執行事件綁定的時候,將事件回調函數注冊在了父頁面的jquery對象中。而子頁面在執行trigger方法的時候只會尋找子頁面的jquery對象中注冊的事件回調,所以在事件觸發后執行不了父頁面注冊的事件回調函數,因為在子頁面的jquery對象里找不到。
回答4:兩個jq, 兩個環境, 確定沒問題么?
------ 上面是原答案, 下面是我被舉報以后的吐槽 -------
我想請問舉報我的那個, 兩個jq環境, 這是不是你無法觸發事件的原因? 我這個回答有什么問題? 你舉報的理由是啥?
相關文章:
1. bootstrp是col-md-12列的,只有col-md-10有內容,可以讓沒有內容的不占據位置嗎;2. java - 如何用圖畫的方式有效地表示多線程?3. thinkPHP5中獲取數據庫數據后默認選中下拉框的值,傳遞到后臺消失不見。有圖有代碼,希望有人幫忙4. python - Fiddler+Android模擬器抓取app,json數據被加密了,如何解析?5. 常量在外面不加引號會報錯。6. sublime text3安裝package control失敗7. python 3.4 error: Microsoft Visual C++ 10.0 is required8. 百度地圖 - Android app中準備接入地圖sdk,百度VS高德哪個好一點?9. wordpress里,這樣的目錄列表是屬于小工具還是啥?10. 我的怎么不顯示啊,話說有沒有QQ群什么的
