2

在我的计算机上,我正在使用基于 HOSTS 重定向的自定义广告拦截(因此我可以在 Chrome 中使用广告拦截)。我在我的机器上运行 IIS,所以我有一个自定义的空白 404 错误,当iframe页面上显示基于 - 的广告时会显示该错误。

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

<iframe />是否可以从 iframe中更改包含标签?如果可能的话,我只想更改高度和宽度属性。如果是这样,我将如何去做?

4

3 回答 3

3

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

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

于 2009-01-19T01:54:42.353 回答
0

如果我理解正确,您是说您希望 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();">

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

于 2009-01-19T02:19:22.147 回答
0

填充 iframe 的页面无法更改包含 iframe 的页面的任何内容。如果可以,那将是一个巨大的安全风险。可以肯定的是,我使用我在学校提供的两个域尝试了您所要求的内容。简而言之,它不起作用。我在 Firebug 中收到权限被拒绝错误。

于 2009-01-19T06:41:27.530 回答