咨询热线:4006-75-4006
售前:9:00-23:30 备案:9:00-18:00 技术:7*24h
翻了翻message事件的属性,没找到可以直接获取事件源iframe的属性,想想也没毛病,毕竟事件也可以是其它窗口post过来的。于是想了个曲线方法。
先让发送源获取焦点,然后获取焦点元素。
window.addEventListener('message',function(msg){
//做一些事来判断是不是某个iframe发送的消息
msg.source.focus();
var sourceFrame=document.activeElement;
});
如果不想影响焦点的话,可以遍历一遍所有的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);//获取消息源
});