【问题标题】:How to hide elements only if viewed in an iframe仅在 iframe 中查看时如何隐藏元素
【发布时间】:2015-04-09 10:53:31
【问题描述】:

我想关闭 iframe 中的特定元素 - 但如果单独查看地图,则显示它。

我有自己创建的 Google 地图,它们与站点位于相同的域、文件夹等中。就 CSS、JavaScript 等而言,我都可以控制。

我的网页在 iframe 中包含地图,以便与描述地图的其他内容一起显示。如果用户只想看地图,网页上有一个单独查看地图的链接。在创建地图本身的 HTML 文档中,我有一个带有链接的元素,该链接漂浮在带有网站徽标的地图上方,以便用户可以返回网站。

我不希望在使用 iframe 查看时显示此徽标,但我确实希望在单独查看地图时显示此徽标。

我对此进行了研究,并尝试了建议对带有 iframe 和 display: none 的页面使用 CSS 的方法,但不知何故有些东西不起作用。

我不在乎它是否需要 JavaScript、jQuery 或 CSS,我只需要有用的东西。谢谢。

【问题讨论】:

    标签: jquery css iframe


    【解决方案1】:

    您可以使用一些简单的 JavaScript 来检查页面是否在框架中呈现:

    if (window.top != window) {
        // in a frame, hide stuff
    }
    

    window.top 指的是页面中最上面的窗口。当页面单独查看时,即为常规的window;在一个框架中,它不是。

    【讨论】:

    • 是的,我试过了,但我又试了一次,没有用。也许我只是没有正确定位它?我已经在一个 jQuery 文档中准备好了 - 所以我正在使用 jQuery 函数。 if (window.top != window) { $("#wrulogo").hide();如果 (window.top != window) { $("#wrulogo").css("display", "none");这也不起作用。
    【解决方案2】:

    您可以检测self 窗口是否也是top 窗口。如果不是,则将一个类应用于root 元素并使用该类隐藏或显示部分内容:如果将此脚本放在head 中

    <script>
       (function(d, w) {
          if (w.self !== w.top) {
             /* this document is loaded in a frame/iframe */
             d.className += " iframe";
          }
       }(document.documentElement, window));
    </script>
    

    在 CSS 包含之前,那么你可能会编写这种规则

    .map { display: block; }
    .iframe .map { display: none; }
    

    或者像这样使用jQuery

    $('.iframe .map').hide();
    

    【讨论】:

    • 我首先让它设置样式 display: none 然后将它添加到 jQuery if (window.self == window.top) { $("#wrulogo").show() ; }
    猜你喜欢
    • 2016-12-13
    • 2015-10-05
    • 2022-11-14
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    相关资源
    最近更新 更多