2016-09-29 107 views
0

我有一個包含多個沙盒iframe的shell頁面。在addEventListener中查找源代碼iframe的周邊元素

例如

<div> 
    <div id="sb1"><iframe sandbox="allow-scripts" srcdoc="stuff here"/></div> 
    <div id="sb2"><iframe sandbox="allow-scripts" srcdoc="other stuff here"/></div> 
</div> 

當我收到來自其中一個iframe的消息時,我想知道父div(即#sb1或#sb2)。

我曾嘗試以下,但它不工作:

function receiveMessage(event) 
{ 
    // Follow line results in : Uncaught DOMException: Blocked a frame with origin ... 
    var parentDiv = $(event.source).parent(); 
} 

window.addEventListener("message", receiveMessage); 

有沒有一種方法來確定的iframe的父,而不必通過一個id來自iframe的消息嗎?

+1

可能不會,看到iframe被同源策略阻止。 – adeneo

+1

您可以查看文檔中的iframe以找到具有匹配的窗口對象的iframe。 –

回答

0

我能得到這個基於 「亞歷山大奧馬拉」 評論的工作。

function receiveMessage(event) 
{ 
    var parentDiv = $($('iframe').toArray().find(
     function(f) { 
     return f.contentWindow === event.source; 
     } 
    )).parent(); 
} 

window.addEventListener("message", receiveMessage); 
0

最近我需要知道切換模式的按鈕的ID。 'relatedTarget'爲我工作,它也可能適用於您的情況。

function receiveMessage(event) 
 
    { 
 
    var id = event.relatedTarget.id; 
 
    } 
 
    
 
    window.addEventListener("message", receiveMessage);

+0

relatedTarget沒有爲我定義。 – Sam