从IFrame源中更改IFrame属性。可能吗?

时间:2009-01-19 01:08:07

标签: javascript iframe adblock

在我的计算机上,我使用的是基于HOSTS重定向的自定义广告码(因此我可以在Chrome中使用adblock)。我在我的计算机上运行IIS,因此我在页面上显示基于iframe的广告时会显示自定义空白404错误。

我修改了404错误以从其父级继承其背景颜色,以便广告在具有非白色背景的网站上看起来并不令人讨厌。我的下一个挑战是使用我的404页面完全折叠iframe,以便它根本不会显示在页面上。

是否可以在iframe中更改包含<iframe />标记?我只是想改变身高和高度如果可能的话,宽度属性。如果是这样,我将如何做到这一点?

3 个答案:

答案 0 :(得分:3)

不可能,因为iframe中的网站可以是外部网站。允许他们操纵他们显示的环境将是浏览器安全风险。

您最好使用广告拦截代理。

答案 1 :(得分:0)

如果我理解正确的话,那就是说你希望你的404页面在iframe加载时触发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();">

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

答案 2 :(得分:0)

填充iframe的页面无法改变包含iframe的页面的任何内容。如果可以,那将是一个巨大的安全风险。可以肯定的是,我尝试使用我在学校给出的两个域名来解决问题。简单地说,它没有用;我在Firebug中收到了一个允许拒绝的错误。