javascript - 父頁面監(jiān)聽iframe中的事件問題
問題描述
始終無法監(jiān)聽到,是什么原因?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
剛才搜索時(shí)發(fā)現(xiàn)的,也不錯(cuò),兼容性可以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。
或者只在同一個(gè)頁面綁定和處理事件。
$(’#iframe’).contents().find(’#button’).on('click', function(){ $(window).trigger(’dosomething’);});回答3:
無法監(jiān)聽到的原因是因?yàn)楦疙撁嫱ㄟ^on方法執(zhí)行事件綁定的時(shí)候,將事件回調(diào)函數(shù)注冊在了父頁面的jquery對象中。而子頁面在執(zhí)行trigger方法的時(shí)候只會(huì)尋找子頁面的jquery對象中注冊的事件回調(diào),所以在事件觸發(fā)后執(zhí)行不了父頁面注冊的事件回調(diào)函數(shù),因?yàn)樵谧禹撁娴膉query對象里找不到。
回答4:兩個(gè)jq, 兩個(gè)環(huán)境, 確定沒問題么?
------ 上面是原答案, 下面是我被舉報(bào)以后的吐槽 -------
我想請問舉報(bào)我的那個(gè), 兩個(gè)jq環(huán)境, 這是不是你無法觸發(fā)事件的原因? 我這個(gè)回答有什么問題? 你舉報(bào)的理由是啥?
相關(guān)文章:
1. python - 我在使用pip install -r requirements.txt下載時(shí),為什么部分能下載,部分不能下載2. mysql - jdbc的問題3. python - 如何正則字符串中的所有漢字4. mysql - 分庫分表、分區(qū)、讀寫分離 這些都是用在什么場景下 ,會(huì)帶來哪些效率或者其他方面的好處5. mysql - 如何減少使用或者不用LEFT JOIN查詢?6. python - 編碼問題求助7. 視頻文件不能播放,怎么辦?8. 圖片鏈接的地址怎么獲得的9. mysql 5個(gè)left關(guān)鍵 然后再用搜索條件 幾千條數(shù)據(jù)就會(huì)卡,如何解決呢10. python - oslo_config
