[Javascript]获取触发message事件的源iframe

翻了翻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);//获取消息源
});

 



本文发布于 https://luojia.me

本站文章未经文下加注授权不得拷贝发布。

0 0 投票数
打分
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论