postMessage
index.html
<!DOCTYPE html><html>
<head>
<meta charset=”UTF-8”>
<title>HTML5 使用postMessage在不同網頁之間傳送文字訊息(傳送頁面)</title>
<style>
</style>
<script>
var new_win;<span style="color: #008800; font-style: italic;">/* 開啟另一個網頁 */</span> <span style="color: #aa22ff; font-weight: bold;">function</span> openWin() { new_win <span style="color: #666666;">=</span> <span style="color: #aa22ff;">window</span>.open(<span style="color: #bb4444;">"index2.html"</span>); } <span style="color: #008800; font-style: italic;">/* 傳送文字訊息 */</span> <span style="color: #aa22ff; font-weight: bold;">function</span> sendMsg() { <span style="color: #aa22ff; font-weight: bold;">var</span> msg <span style="color: #666666;">=</span> <span style="color: #aa22ff;">document</span>.getElementById(<span style="color: #bb4444;">"msg_txt"</span>).value; new_win.postMessage(msg, <span style="color: #bb4444;">"*"</span>);<span style="color: #008800; font-style: italic;">//表示限定訊息是給某特定網域,本例使用 * 表示沒限制</span> } <span style="color: green; font-weight: bold;"></script></span>
</head>
<body>
HTML5 使用postMessage在不同網頁之間傳送文字訊息(傳送頁面)<br>
測試範例:<br>
1.<button onclick=”openWin()”>開啟接收訊息頁面</button><br>
2.<input id=”msg_txt” type=”text” value=”msg test” />
<button onclick=”sendMsg()”>傳送文字訊息到接收頁面</button>
</body>
</html>
index2.html
<!DOCTYPE html><html>
<head>
<meta charset=”UTF-8”>
<title>HTML5 使用postMessage在不同網頁之間傳送文字訊息(接收頁面)</title>
<style>
</style>
<script>
var myMsg = function (e) {
alert(“接收到的訊息:” + e.data);
alert(“訊息來源網域:” + e.origin);<span style="color: #aa22ff;">document</span>.getElementById(<span style="color: #bb4444;">"res"</span>).innerHTML <span style="color: #666666;">=</span> <span style="color: #bb4444;">"接收到的訊息:"</span> <span style="color: #666666;">+</span> e.data; }; <span style="color: #aa22ff;">window</span>.addEventListener(<span style="color: #bb4444;">"message"</span>, myMsg, <span style="color: #aa22ff; font-weight: bold;">false</span>);<span style="color: #008800; font-style: italic;">//監聽message事件</span> <span style="color: green; font-weight: bold;"></script></span>
</head>
<body>
HTML5 使用postMessage在不同網頁之間傳送文字訊息(接收頁面)
<div id=”res”></div>
</body>
</html>
說明:
1、postMessage 是應用於從 A 網域(index.html)傳送訊息至 B 網域(index2.html)。
2、postMessage 使用的前提是 B 網域要有提供頁面讓 A 網域來呼叫。
3、上例使用 window.open 開新視窗來示範,也可以使用 iframe 方式來示範。
4、注意,跑上面範例要在 hosted server 上跑才行。
參考資料:
HTML5 postMessage iframe跨域web通信简介