在addEventListener中查找源iframe的周围元素

时间:2016-09-29 22:35:06

标签: javascript html5 iframe sandbox

我有一个包含许多沙盒iframe的shell页面。

e.g。

<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的父级而无需在iframe的消息中传递ID?

2 个答案:

答案 0 :(得分:0)

最近我需要知道切换模态的按钮的ID。 &#39; relatedTarget&#39;为我工作,它也适用于你的情况。

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

答案 1 :(得分:0)

我能够根据&#34; Alexander O&#39; Mara&#34;评价。

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

window.addEventListener("message", receiveMessage);