Javascript postMessage()生成错误;“未定义”不是一个函数;

Javascript postMessage()生成错误;“未定义”不是一个函数;,javascript,jquery,html,iframe,postmessage,Javascript,Jquery,Html,Iframe,Postmessage,我正试图让postMessage()在iframe和我的主网站之间进行通信。然而,使用on中给出的确切语法,我得到了一个很好的未定义不是一个函数错误。我尝试过几种方法,比如在Javascript中初始化iframe并将其附加到我的页面,但这给我留下了相同的错误。同样,使用单独的选择器选择我的iframe 我有以下Javascript代码: <script type="text/javascript"> $(document).ready(function() {

我正试图让
postMessage()
在iframe和我的主网站之间进行通信。然而,使用on中给出的确切语法,我得到了一个很好的
未定义不是一个函数
错误。我尝试过几种方法,比如在Javascript中初始化iframe并将其附加到我的页面,但这给我留下了相同的错误。同样,使用单独的选择器选择我的iframe

我有以下Javascript代码:

<script type="text/javascript">
    $(document).ready(function() {
        $('.editor').postMessage("A", "domain here");
    });

    function receiveMessage(event)
    {
        if (event.origin !== "domain here")
            return;

        // Do something
    }

    window.addEventListener("message", receiveMessage, false);
</script>

$(文档).ready(函数(){
$('.editor').postMessage(“A”,“此处为域”);
});
函数接收消息(事件)
{
if(event.origin!=“此处为域”)
返回;
//做点什么
}
window.addEventListener(“消息”,receiveMessage,false);
上面的脚本尝试向页面上的my iframe发送消息,如下所示:

<iframe src="domain here/frameListener.html" class="editor"></iframe>

然后,它有一个函数
receiveMessage
,用于捕获作为对主网页的响应而发送的任何消息。最后但并非最不重要的一点是,我尝试了中给出的答案:但这并没有解决我的问题。因此,它不是复制品


如何消除此错误消息?

postMessage
不是jQuery函数,因此需要获取实际的
窗口
DOM元素并调用它:

 $('.editor').get(0).contentWindow.postMessage("A", "domain here");
此外,您需要访问
iframe
contentWindow
属性。以下是MDN文档的摘录:

otherWindow

对另一窗口的引用;这样的参考可能是错误的 例如,使用iframe的contentWindow属性获得 元素,由window.open或命名或数字返回的对象 对window.frames进行索引


postMessage
Window
对象的方法,而
$('.editor')
是jQueryobject@hindmost谢谢,我已将我的代码更改为Jivings答案中给出的示例,但是这并没有解决我的问题。因此,如果要使用Javascript方法,您根本无法使用
JQuery
选择元素?那太差劲了:/谢谢你的回答!将对其进行测试并接受您的答案。不幸的是,在将代码更改为您的示例后,我会收到相同的错误消息。@KevinVoorn已更新。您需要访问
contentWindow
propertyYep,它完成了这些技巧。谢谢你,我一直在为此奋斗,哈哈。因此,如果我理解正确,您不能在JQuery选定对象上使用Javascript方法?@KevinVoorn谢谢!很高兴我能帮忙
otherWindow.postMessage(message, targetOrigin, [transfer]);