使用typeof窗口的任何问题.postMessage === undefined

Any gotchas using typeof window.postMessage === undefined?

本文关键字:postMessage undefined 问题 任何 typeof 窗口 使用      更新时间:2023-09-26

我有一个网页,将不能正常工作,如果postMessage不可用。我想用一个简单的:

if (window.postMessage === undefined) {
  //alert the user
}

这种方法是否存在不可预见的问题?

我不是JS专家,也不是粉丝,但这里是我遇到类似问题的经验:

我们有一个类似的问题:我们在一个对象上使用"postMessage"来与chrome浏览器中加载的本地库进行通信。在某些情况下,"postMessage"在通信正常工作后未定义。

原来它是在我们切换了div的可见性之后出现的,div包含了我们调用"postMessage"的html对象。

我们有这样的东西:

在我们的例子中,我们在"embed"对象上调用"postMessage"(这就是与本地层通信的方式)。

所以,如果是类似的场景,也许你修改了"window"对象的一些属性,从而使"postMessage"函数未定义。这只是个提示

    function handlingMsg(e){
        var heightIn = (typeof e.data === "object") ? e.data['height'] : e.data;
        $("#zbFrame").attr("height",Number(heightIn));
    }
    //iframe 적용
    // <= ie8
    if (!window.addEventListener) {
        window.attachEvent("onmessage", handlingMsg);
    }else{ // > ie8
        window.addEventListener('message', handlingMsg, false);
    }