我目前正在开发一个打开 iframe 并设置 postMessage 来回通信的书签。这一切都很好。但是,似乎因为小书签是作为匿名函数加载的,如果我在一个页面上多次运行小书签,听众就会成倍增加。
是否有某种方法可以跟踪这些 addEventListeners,以免它们加倍?
我需要在匿名函数之外定义 rp_receive_message 吗?
下面是代码示例:
var rp_receive_message = function (e) {
var response = e.data;
console.log("got message with "+ response);
};
if (window.addEventListener) {
window.addEventListener('message', rp_receive_message, false);
} else {
window.attachEvent('onmessage', rp_receive_message);
}
var s1 = window.document.createElement('iframe');
s1.setAttribute('src', 'http://mydomain.com/iframe.html');
s1.setAttribute('id', 'testiframe');
s1.setAttribute('width', '700');
s1.setAttribute('height', '550');
s1.setAttribute('frameBorder', '0');
s1.setAttribute('onload', 'this.contentWindow.postMessage(window.location.href, "http://mydomain.com/iframe.html");');
document.getElementById('container').appendChild(s1);