【问题标题】:how to close Iframe using paremt post message in javascript如何在 javascript 中使用父 postmessage 关闭 iframe
【发布时间】:2019-04-03 14:30:55
【问题描述】:

我有一个包含 iframe 的简单块,我希望用户能够使用按钮关闭 iframe。

这是我目前所拥有的

JS

更新

  document.querySelector(DOM.videoclosebtn).addEventListener('click', closeIframeContainer);
    var closeIframeContainer =function(){
        window.parent.postMessage("event=closeiframe", "*");
    };

    window.addEventListener("message", receiveMessageFromIframe, false);
    function receiveMessageFromIframe(msg) {
        if (event == "closeiframe") {
            document.getElementById('iframe-container').remove();
        }else{
           alert('hehehe');
        }
    }

这里是带有 iframe 的 index.html

<div id="iframe-container">

            <iframe src="/videoexplainer/data.html" style="border:none"></iframe>
    </div>

这里是data.html

 <div id="video-close_btn" class="video-btn">
                    <img src="images/x.png" />
                </div>

错误:

Uncaught TypeError: Cannot read property 'window' of null
    at HTMLDivElement.closeIframeContainer (videoexplainer.js:123)

不幸的是它不起作用,我需要做什么才能得到我想要的?

【问题讨论】:

  • 当询问有关某些不起作用的问题时,准确解释“不起作用”的含义会很有帮助:控制台中的错误?什么都没发生?发生错误的事情?人们不能总是只看你发布的代码就能立即理解问题所在。

标签: javascript jquery html iframe postmessage


【解决方案1】:

您的代码将来自.postMessage() 调用的返回值分配给getIFrameID,但随后您希望将其用作DOM 节点引用。

var closeIframeContainer = function(){
   var getIframeID = document.getElementById('iframe-container');
   getIframeID.parent.postMessage("*");
   getIframeID.style.display="none";
};

先获取元素节点引用,再进行其他操作。

【讨论】:

  • 我已经测试了你的方法我收到以下错误:~videoexplainer.js:124 Uncaught TypeError: Cannot read property 'parent' of null`
  • @user9964622 你从原始代码中得到了什么?
  • This => Uncaught TypeError: Cannot read property 'window' of null
  • 好的,你看,你必须在你的问题中解释出了什么问题,并发布所有相关代码。您发布的代码根本没有引用符号window,因此它不可能是错误的根源。
  • @user9964622 你的iframe-container 元素是&lt;div&gt;,而不是&lt;iframe&gt;。 iframe 的父窗口在事件处理程序的上下文中只是 window。
猜你喜欢
  • 1970-01-01
  • 2019-02-02
  • 2011-04-17
  • 1970-01-01
  • 2017-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多