Heim >Web-Frontend >H5-Tutorial >Html5 postMessage?

Html5 postMessage?

WBOY
WBOYOriginal
2016-06-07 08:42:331584Durchsuche

a标签打开一个新页面 想用postMessage的方式传递些数据 但是一直没有成功
在外面包了一层 定时器就OK了。
求解~~
没有跨域的问题
我在想 新打开的页面是否‘太慢’了 根本没有响应postmessage事件

回复内容:

postMessage发送消息是给当时window里的document。而刚open时,document是about:blank。要等demo.html实际开始加载(至少要等到browser开始接受response的body的第一个字节),postMessage才能发送到demo.html。

所以setTimeout也不是很靠谱,比如网络连接时间比较长,超过100ms,也不会成功。

靠谱的方式是等待demo.html向父窗口发回第一个消息时,再向demo.html发送消息。

<code class="language-js"><span class="kd">var</span> <span class="nx">newWin</span> <span class="o">=</span> <span class="p">...</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">addEventListener</span><span class="p">(</span><span class="s1">'message'</span><span class="p">,</span> <span class="nx">e</span> <span class="o">=></span> <span class="p">{</span>
  <span class="k">if</span> <span class="p">(</span><span class="cm">/* got ready message from demo.html */</span><span class="p">)</span> <span class="p">{</span>
    <span class="nx">newWin</span><span class="p">.</span><span class="nx">postMessage</span><span class="p">(...)</span>
  <span class="p">}</span>
<span class="p">})</span>
</code>
因为新窗口根本没加载好啊。open之后获得新窗口的句柄,然后为这个句柄设置onload事件,在onload事件里发送消息
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn