检测iframe内部然后隐藏元素

时间:2011-02-11 12:55:45

标签: javascript css iframe elements

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

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

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

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

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

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

反正我能做到吗? 是否有一些javascript可以运行,如果它检测到它是一个iframe它可以做一个显示:没有我要隐藏的元素?

非常感谢提前。

2 个答案:

答案 0 :(得分:1)

我会这样做: 在链接页面(www.mypage.com/link1.html)中,我将有一个脚本来验证网址的哈希是否具有某个值。如果是,则隐藏横幅;否则正常显示横幅。 因此,当您在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;

当然,您可以像使用sintax:url?banner = false这样的php查询一样使用,并检查网址中的参数。
希望这有帮助!

答案 1 :(得分:0)

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

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