代码之家  ›  专栏  ›  技术社区  ›  Dan Herbert

正在从iframe源中更改iframe属性。有可能吗?

  •  2
  • Dan Herbert  · 技术社区  · 16 年前

    在我的计算机上,我使用的是基于主机重定向的自定义adblock(这样我就可以在chrome中使用adblock)。我正在我的计算机上运行IIS,因此我有一个自定义的空白404错误,当 iframe -基于广告显示在页面上。

    我修改了404错误,从其父网站继承了它的背景色,这样在非白色背景的网站上,广告看起来就不会令人讨厌了。我的下一个挑战是使用我的404页完全崩溃 伊夫拉姆 这样它就不会显示在页面上。

    能改变容器吗 <iframe /> 从iframe中标记?如果可能,我只想更改高度和宽度属性。如果是这样,我该怎么做呢?

    3 回复  |  直到 14 年前
        1
  •  3
  •   ceejayoz    16 年前

    不可能,因为iframes中的站点可以是外部站点。允许他们操作显示在其中的环境会带来浏览器安全风险。

    最好使用adblocking代理。

        2
  •  0
  •   David Crow    16 年前

    如果我正确理解你,你是说你希望404页面在加载到iframe时触发它的崩溃。最简单的方法是在父页面中创建一个函数,然后在加载时从404调用它。

    例如,如果您的iframe具有id“advertframe”,您可以向父页面添加以下javascript函数:

    function hideAdvertFrame() {
      var advertFrame = document.getElementById("advertFrame");
      advertFrame.style.height = 0;
      advertFrame.style.width = 0;
    }
    

    然后在404页中,可以在加载函数时立即调用该函数:

    <body onload="window.parent.hideAdvertFrame();">
    

    也就是说,除了不太容易出现安全漏洞的跨帧脚本之外,我认为您可能还需要考虑其他选项。也许在加载adblock之前,您的父页面可以使用ajax来检查它是否具有有效的URL,然后在确定之后将其动态添加到页面中。

        3
  •  0
  •   geowa4    16 年前

    填充iframe的页面无法更改包含iframe的页面的任何内容。如果可能的话,那将是一个巨大的安全风险。可以肯定的是,我用我在学校里得到的两个域来尝试你所要求的。简单地说,它不起作用;我在Firebug中得到了一个许可被拒绝的错误。