gpt4 book ai didi

javascript - 'data' 为 null 或不是对象 IE8

转载 作者:行者123 更新时间:2023-12-01 02:05:57 26 4
gpt4 key购买 nike

我正在使用 postMessage 将消息从 iframe 传输到其父页面。这是我的代码。在 iframe 中:

$(".history_date").click(function(event) {
window.top.postMessage($(this).text(), "*");
});

在父页面中:

$(function(){
window.onmessage = function(e){
if(e.data){
//do something

}
};
});

在 Chrome、Firefox 和 IE9/10 中运行良好,但在 IE8 中,出现错误提示

'data' is null or not an object.

如何解决?

最佳答案

IE8 仍然缺少 DOM2 事件附件,仍然使用全局 event 对象,而不是传递到事件处理程序中的对象。您说过错误是'data' is null or not an object,您确定不是'e' is null or not an object

如果是,那么这应该可以解决它:

window.onmessage = function(e){
e = e || window.event;
if (e.data) {
// ...
}
};

在 IE8 及更早版本上,没有参数传递到事件处理程序中。相反,您查看全局 event 变量(全局变量也是 window 对象的属性)。因此,在 IE8 及更早版本上,e 将是 undefined,而在 IE9+ 和所有其他浏览器上,e 将是事件对象。

所以这一行:

e = e || window.event;

...使用 the curiously-powerful || operator ,如果第一个参数是“true”,它将返回它的第一个参数;如果第一个参数是“falsey”,它将返回第二个参数。由于 undefined 为 false,因此在 IE8 及更早版本上,e = e || window.eventwindow.event 分配给 e。在 IE9+ 和所有其他浏览器上,它只是将 e 分配回自身(无操作)。

这是代码中的常见模式,必须与 IE8 及更早版本以及将事件对象传递到处理程序的浏览器进行交互。

关于javascript - 'data' 为 null 或不是对象 IE8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17609468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com