HTML 5 windowsとiframeの間でメッセージを渡す

2044 ワード

まずホームページのHTMLコード
<section id="wrapper">
	<header><h1>postMessage (  )</h1></header>
	<article>
		<form>
			<p>
				<label for="message"> iframe     :</label><input type="text" name="message" value="son" id="message" />
				<input type="submit" />
			</p>
		</form>
		<h4>  iframe     :</h4>
		<p id="test">    </p>
			<iframe id="iframe" src="xiebiji.com/works/postmessage/iframe.html"></iframe>
	</article>
</section>

そしてiframeのHTMLコード
<form>
	<p>
		<label for="message">        :</label><input type="text" name="message" value="dad" id="message" />
		<input type="submit" />
	</p>
</form>
<p id="test">    。</p>

そしてホームページのJSコード
var win = document.getElementById("iframe").contentWindow;
document.querySelector('form').onsubmit=function(e){
	win.postMessage(document.getElementById("message").value,"*");
    if (e.preventDefault){
		e.preventDefault();
	}
	e.returnValue = false;
}

キーコードは次のとおりです.
win.postMessage(document.getElementById("message").value,"*");
postMessageは通信オブジェクトの1つの方法であるため、iframeに通信することは、iframeオブジェクトにpostMessageメソッドを呼び出すことである.postMessageには2つのパラメータがありますが、1つが欠けてはいけません.1番目のパラメータは伝達されるデータであり、2番目のパラメータは通信を許可するドメインであり、「*」はアクセスしないドメインを表し、すべてのドメインの通信を許可すると理解される.
そしてiframeのJSコード
var parentwin = window.parent;
window.onmessage=function(e){
	document.getElementById("test")。innerHTML = e.origin + "say:" + e.data;
	parentwin.postMessage('HI!     "<span>'+e.data+'"</span>。',"*");
};
注:e.dataは転送されたデータを含み、e.originはソースドメインを指す