编辑内部iframe内的跨域iframe的css

我检查了这里提出的关于编辑iframe的CSS的(很多)问题,并且我能够编辑来自我们自己网站的其他iframe,但这是完全不同的。

我有一个iframe(托管在同一个网站上)创建一些HTML元素,然后调用跨域iframe来显示游戏(在其中)。

到目前为止,我已经能够使用jquery .contents()和.find()函数自由编辑内部iframe:

var first-iframe = $('#iframeid').contents(); first-frame.find('.to-modify').css('blabla','10); 

内容允许我.find()iframe中的任何元素并修改css。 当我有第二个跨域iframe时会出现问题。

第一个.contents()似乎没有让我访问第二个iframe,我不确定是否可以进行排队调用。 我试过这样的事情:

 first-iframe.find('#second-Iframe').contents(); 

但这似乎也不起作用。 我阅读了许多其他选项来编辑css,但大多数选项不适用于跨域iframe。

很抱歉没有提供任何代码,它包含一些明智的逻辑。 我希望我的问题足够清楚。

没有办法编辑跨域IFrame,因为它会打开各种安全漏洞。

想象一下,我打开一个隐藏的跨域IFrame给你的银行,并可以对它进行流氓JS操作?

但是,您可以在域链中操作同一级别或更低级别的域,但这是因为域内的“内部信任”,例如:example.com可以编辑bar.example.com

如果有办法,那就是CVE,应报告修复。

这只能利用windows.postMessage()在iframe和父窗口之间推送消息。 为了使其工作,您需要编写存在于两个站点上的JS,因此如果第三方域不在您的控制之下,那么此解决方案将不适合您:

在父页面上

 window.onload = function () { var iframeWin = document.getElementById("da-iframe").contentWindow, form = document.getElementById("the-form"), myMessage = document.getElementById("my-message"); myMessage.select(); form.onsubmit = function () { iframeWin.postMessage(myMessage.value, "http://domainwithiframe.com"); return false; }; }; 

在iframe

 function displayMessage (evt) { var message; if (evt.origin !== "http://domainwithiframe.com") { message = "You are not worthy"; } else { message = "I got " + evt.data + " from " + evt.origin; } document.getElementById("received-message").innerHTML = message; } if (window.addEventListener) { // For standards-compliant web browsers window.addEventListener("message", displayMessage, false); } else { window.attachEvent("onmessage", displayMessage); } 

在实践中这种类型的function的一个很好的例子是iframereszier库,你可以在这里查看:

http://davidjbradshaw.github.io/iframe-resizer/