下面的範例,是先從某一個網頁,使用 window.open 開啟另一個網域的頁面,再將文字訊息傳送過去。
(若要傳送給 iframe 的頁面,可以使用 contentWindow 取得 iframe 載入的頁面,就可以用相同的方式傳送。)
傳送文字訊息頁面 (http://demo.cinc.biz/html5-postmessage/text.html)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML5 使用postMessage在不同網頁之間傳送文字訊息(傳送頁面)</title>
<style>
</style>
<script>
var new_win;
/* 開啟另一個網頁 */
function openWin() {
new_win = window.open("http://demo2.cinc.biz/html5-postmessage/text-new.html");
}
/* 傳送文字訊息 */
function sendMsg() {
var msg = document.getElementById("msg_txt").value;
new_win.postMessage(msg, "http://demo2.cinc.biz");//表示要送給demo2.example.com網域
}
</script>
</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>
接收文字訊息頁面 (http://demo2.cinc.biz/html5-postmessage/text-new.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);
if (e.origin != "http://demo.cinc.biz") {
alert("不明來源,不處理");
return; //不明來源,不處理
}
document.getElementById("res").innerHTML = "接收到的訊息:" + e.data;
};
window.addEventListener("message", myMsg, false);//監聽message事件
</script>
</head>
<body>
HTML5 使用postMessage在不同網頁之間傳送文字訊息(接收頁面)
<div id="res"></div>
</body>
</html>
DEMO:
http://demo.cinc.biz/html5-postmessage/text.html
參考:
https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage
沒有留言:
張貼留言