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