【问题标题】:Detecting when inside an iframe and then hiding elements检测何时在 iframe 内然后隐藏元素
【发布时间】:2011-02-11 12:55:45
【问题描述】:

我希望你们中的一些人在编码方面比我更好。

我有一个简单的网页 (www.mypage.com)。它有5个链接

链接 1 (www.mypage.com/link1.html) 链接 2 (www.mypage.com/link2.html) 链接 3 (www.mypage.com/link3.html) 链接 4 (www.mypage.com/link4.html) 链接 5 (www.mypage.com/link5.html)

现在在主页上,点击链接会打开一个弹出窗口,使用 iframe 显示他们点击的页面。

现在我想要做的是,当人们通过主页单击链接并因此获得弹出/iframe 时,在该页面上,例如(www.mypage.com/link1.html)我想隐藏一些元素。元素是链接菜单和横幅的东西。

现在,如果有人手动输入其中一个链接,例如直接在浏览器中输入 www.mypage.com/link1.html,那么我希望显示横幅和横幅。

无论如何我可以做到这一点吗? 是否有一些 javascript 可以运行,如果它检测到它是一个 iframe,它可以在我要隐藏的元素上显示:none?

非常感谢。

【问题讨论】:

  • iframe JS是生成的还是硬编码的?

标签: javascript css iframe elements


【解决方案1】:

我会这样做: 在链接页面(www.mypage.com/link1.html)中,我将有一个脚本来验证 url 的哈希是否具有特定值。如果是,则隐藏横幅;否则正常显示横幅。 因此,当您在 iframe 中打开页面时,请务必将 src 设置为“www.mypage.com/link1.html#banner_off”,而不是简单的“www.mypage.com/link1.html”。
这样,当用户在浏览器中输入链接地址(没有哈希值)时,您的广告就会被展示。 以下是链接页面中脚本的示例:

function manageBanners(){
    if(document.location.hash == "banner_off")//hide banners
        {
            //code to hide banners here
            var banners = document.getElementsByClassName('banner');
            for(var i in banners)
                banners[i].style.display = 'none';
        }
    //else do not alter the banners visibility
}
window.onload = manageBanners;

当然,您可以以相同的方式使用 php-query,例如 sintax : url?banner=false 并检查 url 中的参数。
希望这会有所帮助!

【讨论】:

  • 天哪,这是一个很棒的主意。非常感谢。
【解决方案2】:

我能想到的检测页面是否在 iFrame 中的最佳方法是将页面的 URL 与浏览器窗口中的 URL 进行比较。如果它们不同,则必须在一个框架中。

if (top.location != location) {
    // hide menu and banner
}

【讨论】:

  • 谢谢,我也试试。非常感谢
猜你喜欢
  • 2013-04-27
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
  • 2016-12-13
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
相关资源
最近更新 更多