1

由于同源策略,从父窗口访问 iframe 元素受到限制。是否有 CSS hack 或解决方法可以让我们隐藏背景颜色或至少让它看起来透明?

编辑 :

iframe 有 idulBlock并且它包含一个带有 id 的 divlistgroup

#listgroup {
background: none repeat scroll 0 0 #F4F4F4;
border-color: #FDF6E5;
border-left: 1px solid #FDF6E5;
border-right: 1px solid #FDF6E5;
border-style: solid;
border-width: 1px;
margin: 0;
padding: 0;
}

#ulBlock {
height: 321px;
visibility: visible;
}
4

1 回答 1

3

.contents()显然,由于同源策略,如果 iframe 与主机位于不同的域中,则无法在 iframe 上运行 JavaScript 。所以我首先假设这$("#ulBlock").contents()null或不可访问的。否则,您可以只find()使用所需的 div 并使用 jQuery 更改其 css。

您的问题是否存在 CSS 技巧的简短回答是否定的。虽然没有 CSS 技巧,但有几种方法可以完成您想要的:

  • 刷新 iframe 并在查询字符串中传递一些信息,以便在 iframe 中重新加载的页面知道隐藏或透明您所指的任何 div。

  • 利用CORS。虽然一些较旧的浏览器仍然不支持它,而且我读到 CORS 被认为是一个轻微的安全漏洞,但它允许您访问 iframe 内容并运行脚本来更改 iframe 的内容。简而言之,它涉及包含一个名为Access-Control-Allow. 这可能值得一看。

  • 将浏览器消息传递回来和第四。我认为 Daniel Park 在编写允许向 iframe 发送浏览器消息和从 iframe 发送浏览器消息的插件方面做得很好。大多数现代浏览器都支持此功能。访问他的网站:http: //postmessage.freebaseapps.com/。向下滚动到它说示例的地方。他专门编写了该插件来使用 iframe。我在我们的一个商业应用程序中使用了他的代码。

请记住,在上述所有情况下,您都必须有权访问 iframe 的主机和正在嵌入的页面的源。

于 2012-08-11T07:19:40.670 回答