2015-01-21 19 views
0

我想知道如何在JS實現通信的適當的方式(使用的postMessage優選)窗口之間在下列情況下:PostMessage的兩個子與相同來源的窗口

P A - [R簡Ť | | CHILD1 CHILD2

父母在origin1和兩個孩子都在origin2(事實上在兩個不同的模式相同的網站)。

如何發送消息給確切的孩子,避免第二個孩子作出反應。

在此先感謝

回答

0

假設你打開兩個彈出窗口:

/* 
* In window A's scripts, with A being on <http://example.com:8080>: 
*/ 

var popup1 = window.open(...popup details...), 
    popup2 = window.open(...popup details...); 

popup1.postMessage('some message to popup 1', 'http://example.org'); 
popup2.postMessage('some message to popup 2', 'http://example.org'); 

裏面的彈出窗口,你需要添加一個監聽器代碼:

function receiveMessage(event) 
{ 
    // Do we trust the sender of this message? (might be 
    // different from what we originally opened, for example). 
    if (event.origin !== "http://example.org") 
    return; 

    // event.source is popup 
    // event.data is "some message to popup 1" 
} 
window.addEventListener("message", receiveMessage, false); 

這裏美中不足的是,這兩個彈出窗口都需要與父窗口位於同一個域中。

+0

嗨,其實我使用jQuery窗口擴展彈出窗口,但機制應該是相同的。我試圖按照你的建議發佈消息,但總是第一個窗口捕獲消息。所以在做時: popup2.postMessage - popup1獲取並處理消息 – Mick 2015-01-22 10:52:33

相關問題