如何跨域更改iframe内容的样式?

IT技术 javascript html css iframe
2021-03-08 02:47:07

我想让 iframe 内的内容的背景颜色为黑色,文本颜色为白色,默认为正常的白色背景和黑色文本。iframe src 属性指向我无权访问或无法在该域中放置任何文件或样式表的不同域。因此,鉴于这些条件,是否可以在 iframe 内容中仅进行这些样式更改,如果可以,那么如何更改?

3个回答

唯一的可能性是通过您的代理加载 iframe 内容并修改 HTML 内容。您无法通过 JavaScript 从另一个域访问 iframe。

@Brune 我猜我的答案不再有效。请参阅:en.wikipedia.org/wiki/...
2021-05-09 02:47:07
如果你还有这个,你能分享一下示例代码吗
2021-05-10 02:47:07

这是不可能的。同源策略的全部意义在于您无法访问或操纵来自另一个域的内容。

嗯,答案是正确的。您无法更改 iframe 的内容。在肖恩的回答的情况下,您不是在更改 iframe 的内容而是在内容成为 iframe的内容之前更改内容
2021-05-02 02:47:07
-1:指出同源策略是好的。但是,我们不要说这是不可能的,因为它当然可以完成,尽管需要像 Sean 的回答那样做出一些重大的努力,或者像 scmehetio 的回答那样付出一些努力。
2021-05-03 02:47:07
@JonathanM:我不确定它是否值得投反对票,技术上是正确的。确实无法修改受同源策略保护的 iframe。使用 Sean 的答案很好,但它不再是跨域 iframe。它还可以防止您必须处理的大量其他问题,例如一个的相对 URL。至于其他答案 IE 过滤器仅适用于 IE。所以我完全支持这个答案......但是,无论如何:-)
2021-05-10 02:47:07
您对消除同源情况的答案提出了很好的观点。否决票已删除。(不得不做一个小的编辑以方便删除downvote;所以它被锁定了。)
2021-05-13 02:47:07

这个已经在这里一段时间了,但希望这会对某人有所帮助....

我能看到的最接近的是在 iframe 上使用过滤器

X 射线:将其设为黑白,然后将其反转。

 <iframe style="filter:xray" src=".....

反转:反转所有颜色,而不仅仅是交换黑白。

 <iframe style="filter:invert" src=".....

两者都只适用于 IE。直到几分钟前,我还以为这些仅适用于图像...

例如。 http://www.ssi-developer.net/css/visual-filters.shtml