使用JavaScript,我們可以在瀏覽器窗口之間進行通信,因爲我們有對每個窗口的引用。當一個新窗口被創建時,JavaScript方法window.open()會返回對新窗口的引用。子窗口還具有對通過window.opener窗口對象創建它的父窗口的引用。這些引用允許兩個窗口彼此進行通信和操作。
爲了演示如何在cookie之間進行通信,我們假設我們想打開一個窗口,幾秒鐘後關閉它。 view plainprint?
1. var win = window.open('child.html');
2. setTimeout(function() { win.close(); }, 5000);
var win = window.open('child.html');
setTimeout(function() { win.close(); }, 5000);
該代碼將打開一個子窗口,並在5秒後使用對子窗口的引用和方法close()關閉它。但是,如果由於某種原因我們沒有參考,我們將無法調用close方法。因此,讓我們看看如何使用cookie來完成: view plainprint?
1. window.open('child.html');
2. setTimeout(function() { setCookie('child', 'close'); }, 5000);
window.open('child.html');
setTimeout(function() { setCookie('child', 'close'); }, 5000);
這裏我們打開一個窗口,但不保存參考。然後,在5秒鐘後,我們將'close'寫入名爲'child'的cookie(使用僞setCookie()函數)。這本身並沒有做任何事情,但如果子窗口期望cookie,它可以在讀取「關閉」時關閉。讓我們假設下面的JS在child.html中。 view plainprint?
1. // child.html
2. setInterval(function() { getCookie('child') == 'close' ? this.close() : ''; }, 500);
// child.html
setInterval(function() { getCookie('child') == 'close' ? this.close() : ''; }, 500);
這會每半秒檢查一次cookie,如果cookie讀取'close',關閉窗口。
使用這種方法,我們可以發送任何命令到任何打開的窗口,讓他們執行它,而無需引用該窗口。
最後一部分Q是指什麼? – Neal 2011-05-26 17:18:13