发送消息发送到帧

时间:2013-07-25 07:25:11

标签: javascript jquery postmessage

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

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?在这种情况下?

1 个答案:

答案 0 :(得分:0)

对于大多数浏览器,您可以监听该iframe执行postMessage的load事件(找到here的一些示例)。

E.g。

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

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

<强>更新

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

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

然后你可以这样使用它:

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