javascript - 父頁面監(jiān)聽iframe中的事件問題
問題描述
始終無法監(jiān)聽到,是什么原因?parent.html
<body> <iframe src='http://www.4tl426be.cn/wenda/son.html' frameborder='0'></iframe><script src='http://www.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://www.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源碼太久沒看了,找半天,沒找到對(duì)應(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ù)注冊(cè)在了父頁面的jquery對(duì)象中。而子頁面在執(zhí)行trigger方法的時(shí)候只會(huì)尋找子頁面的jquery對(duì)象中注冊(cè)的事件回調(diào),所以在事件觸發(fā)后執(zhí)行不了父頁面注冊(cè)的事件回調(diào)函數(shù),因?yàn)樵谧禹撁娴膉query對(duì)象里找不到。
回答4:兩個(gè)jq, 兩個(gè)環(huán)境, 確定沒問題么?
------ 上面是原答案, 下面是我被舉報(bào)以后的吐槽 -------
我想請(qǐng)問舉報(bào)我的那個(gè), 兩個(gè)jq環(huán)境, 這是不是你無法觸發(fā)事件的原因? 我這個(gè)回答有什么問題? 你舉報(bào)的理由是啥?
相關(guān)文章:
1. nginx - 如何根據(jù)服務(wù)器配置設(shè)置web服務(wù)參數(shù)?2. javascript - table固定尾行,有人寫過嗎?3. javascript - 使用node.js的ws模塊不斷地向客戶端發(fā)送消息,應(yīng)該如何不斷地去觸發(fā)“發(fā)送”這個(gè)動(dòng)作4. javascript - 如何在NW.JS中使用Node自動(dòng)重啟進(jìn)程?5. 前端 - Web內(nèi)部網(wǎng)頁登陸控制,怎么通過apache控制?還有其他的控制嗎?6. css - label文字居中7. css - 網(wǎng)頁div區(qū)塊 像蘋果一樣可左右滑動(dòng) 手機(jī)與電腦8. 為什么學(xué)習(xí)PHP9. pdo - mysql 簡(jiǎn)單注入疑問10. 引入traits后,為什么index得是空的呢?
