将消息发送到帧

Post Message sending to the frame

本文关键字:消息      更新时间:2023-09-26

我有一个隐藏的框架,接受消息,但我不必点击发送。我正在调用执行和操作的函数,包括发送消息。它们的速度不满足功能设置超时。

this.request = function (requestData) {
    $(function () {
        dataOrign = requestData;
        var iframe = $('iframe#postFrame');
        setTimeout(function () {
            var parseData = JSON.stringify(requestData);
            iframe[0].contentWindow.postMessage({ request: parseData }, '*');
        }, 1000);
    });
};

如何在最短的时间内发送postMessage?在这种情况下?

对于大多数浏览器,您可以侦听该iframe的load事件(此处有一些示例)来执行postMessage。

例如

$('iframe#postFrame').on('load', function(e) { 
    // do postMessage here
});

然而,setTimeout/setInterval方法对于较旧的浏览器(IE7/8)来说似乎是不可避免的。

更新

如果你想把它写成一个函数,你可以这样做:

var request = function(requestData, $iframe) { 
    if ($iframe.length > 0 && $iframe.get(0).document.readyState === 'completed') { 
        // do postMessage
    }
};

然后你可以这样使用它:

request(data, $('iframe#postFrame'));