javascript - 父頁面監(jiān)聽iframe中的事件問題
問題描述
始終無法監(jiān)聽到,是什么原因?parent.html
<body> <iframe src='http://www.b3g6.com/wenda/son.html' frameborder='0'></iframe><script src='http://www.b3g6.com/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://www.b3g6.com/wenda/jquery.js'></script><script> $(function(){$(’#button’).on(’click’, function(){ $(window).trigger(’dosomething’);}); });</script></body>
謝謝!
Dont
剛才搜索時發(fā)現(xiàn)的,也不錯,兼容性可以MessengerJShttps://github.com/biqing/Mes...跨文檔通信解決方案
問題解答
回答1:son.html
$(function(){$(’#button’).on(’click’, function(){ window.parent.$(window).trigger(’dosomething’);}); });
事件是在父頁面的jquery里定義的,要觸發(fā)需要交由父頁面的jquery來負(fù)責(zé)觸發(fā)。
jquery源碼太久沒看了,找半天,沒找到對應(yīng)的內(nèi)容來說明。
回答2:頁面間通信可以使用 postMessage。
或者只在同一個頁面綁定和處理事件。
$(’#iframe’).contents().find(’#button’).on('click', function(){ $(window).trigger(’dosomething’);});回答3:
無法監(jiān)聽到的原因是因?yàn)楦疙撁嫱ㄟ^on方法執(zhí)行事件綁定的時候,將事件回調(diào)函數(shù)注冊在了父頁面的jquery對象中。而子頁面在執(zhí)行trigger方法的時候只會尋找子頁面的jquery對象中注冊的事件回調(diào),所以在事件觸發(fā)后執(zhí)行不了父頁面注冊的事件回調(diào)函數(shù),因?yàn)樵谧禹撁娴膉query對象里找不到。
回答4:兩個jq, 兩個環(huán)境, 確定沒問題么?
------ 上面是原答案, 下面是我被舉報以后的吐槽 -------
我想請問舉報我的那個, 兩個jq環(huán)境, 這是不是你無法觸發(fā)事件的原因? 我這個回答有什么問題? 你舉報的理由是啥?
相關(guān)文章:
1. debian - docker依賴的aufs-tools源碼哪里可以找到啊?2. dockerfile - 我用docker build的時候出現(xiàn)下邊問題 麻煩幫我看一下3. docker網(wǎng)絡(luò)端口映射,沒有方便點(diǎn)的操作方法么?4. docker-compose 為何找不到配置文件?5. macos - mac下docker如何設(shè)置代理6. docker start -a dockername 老是卡住,什么情況?7. docker 下面創(chuàng)建的IMAGE 他們的 ID 一樣?這個是怎么回事????8. 如何解決Centos下Docker服務(wù)啟動無響應(yīng),且輸入docker命令無響應(yīng)?9. angular.js使用$resource服務(wù)把數(shù)據(jù)存入mongodb的問題。10. docker gitlab 如何git clone?

網(wǎng)公網(wǎng)安備