-1

我有一个接受消息的隐藏框架,但我不必通过单击发送。我正在调用执行和操作的函数,包括发送消息。函数 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?在这个情况下?

4

1 回答 1

0

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

例如

$('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'));
于 2013-07-25T07:38:09.297 回答