JAVASCRIPT獲取觸發(fā)MESSAGE事件的源IFRAME
2019-06-30 00:04:04
12679
翻了翻message事件的屬性,沒找到可以直接獲取事件源iframe的屬性,想想也沒毛病,畢竟事件也可以是其它窗口post過(guò)來(lái)的。于是想了個(gè)曲線方法。
先讓發(fā)送源獲取焦點(diǎn),然后獲取焦點(diǎn)元素。
window.addEventListener('message',function(msg){
//做一些事來(lái)判斷是不是某個(gè)iframe發(fā)送的消息
msg.source.focus();
var sourceFrame=document.activeElement;
});
如果不想影響焦點(diǎn)的話,可以遍歷一遍所有的iframe
function findIframe(win){
var fs=document.querySelectorAll('iframe');
for(var is=fs.length;is--;){
if(fs[is].contentWindow==win)
return fs[is];
}
}
window.addEventListener('message',function(msg){
var iframe=findIframe(msg.source);//獲取消息源
});