【问题标题】:How To close iframe within/from inside of iframe如何在 iframe 内部/从内部关闭 iframe
【发布时间】:2017-09-06 16:38:39
【问题描述】:

我有一个来自我的网站的iframe,我在其他一些域上使用它。这个iframe 将从窗口左侧滑出,并且只占用该页面宽度的 600 像素。

我想让用户在点击关闭按钮时能够关闭iframe

关闭按钮位于 iframe 的同一 url/src 内。

我想知道如何做到这一点,以便当用户点击 关闭按钮 时,它会将 display: none 添加到 iframe/parent iframe

这是其他网站上使用的iframe

<iframe src="http://iframe-src.com/this/iframe" id="iframe">

这是我在http://iframe-src.com/this/iframe源代码中的:

function CloseIframe() {
  document.getElementById('iframe').style.display = "none";
}

<p onclick="CloseIframe()">Close</p>

【问题讨论】:

  • 请输入代码.....
  • 为什么不简单地将关闭按钮添加到 iframe 顶部作为主窗口的一部分?
  • 请显示您的代码一次,看看您尝试了什么
  • @Jonasw 感谢您的评论。因为我无法访问主窗口,因为有些网站不是我的网站
  • "我无法访问主窗口,因为有些网站不是我的网站" 那么你将无法隐藏 iframe,或对主窗口执行任何其他操作,除非这些网站明确允许您通过 CORS 访问。 (但是你是怎么做“从窗口左侧滑出”位的?是在 iframe 内处理还是由父窗口处理?)

标签: javascript html iframe


【解决方案1】:

如果没有父网站所有者的合作,这是不可能的:跨域安全规则将阻止您直接进入父网站以隐藏 iframe 本身。最接近的方法是隐藏 iframe 的内容(例如,通过在主体上设置 display:none)——这会使框架本身不可见,但 iframe 区域内的点击不会落入父级窗户。 (不幸的是,即使您在带框的body 上设置了pointer-events:none,也会出现这种情况。)

您最好的选择可能是为这些站点提供一个脚本,它们可以与您的 iframe 标记一起嵌入,这将在父级内部处理框架的“打开”和“关闭”,避免跨域完全的问题。 (就此而言,该脚本也可以注入 iframe 本身,因此他们仍然只有一个元素可以添加到他们的文档中;它只是一个脚本标签而不是 iframe。)

【讨论】:

    【解决方案2】:
    <iframe src="http://iframe-src.com/this/iframe" id="iframe"> </iframe>
    <script type="text/javascript">
            function CloseIframe() { 
            document.getElementById('iframe').style.display = "none";  
            } 
    </script>
    <p onclick="CloseIframe()">Close</p>
    

    【讨论】:

    • 谢谢@BCPNAYAK 它不起作用。问题是CloseIframe 是从 iframe 源提供的,它必须首先获取父 iframe,而现在没有
    • 当然。 Uncaught TypeError: Cannot read property 'style' of nullat closeIframe (votes?url=http://www.hallo.com/navid/test/&amp;t=1:250) at HTMLParagraphElement.onclick (at HTMLParagraphElement.onclick (votes?url=http://www.hallo.com/navid/test/&amp;t=1:71)
    • 我已经更新了一次再试一次请它工作正常。 @FriendofAfriend
    • 对不起,我现在已经清楚地理解了您的问题,您希望关闭从 iframe 中看到您网站的其他网站的父 iframe,您无法仅更改文档的属性'不要更改其他文档属性...但是如果您想关闭自己的文档 iframe,请使用我现在更新的代码@FriendofAfriend
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 2011-01-15
    • 2021-08-26
    相关资源
    最近更新 更多