2014-10-10 71 views
0

我已经查看并测试了如何从父级处理iframe内容的示例。但是在尝试它为我自己,我不能得到它的工作 - 无论是在我的测试环境(这是所有在同一个域和URL),也不对的jsfiddle:使用jquery更改iframe的css不工作(相同的域)

http://fiddle.jshell.net/3x6mncxf/

我到底做错了什么?

+1

你的代码是好的,你拨弄变“框架和扩展”从'onLoad'选项到'onDomReady'请参阅更新的小提琴http://fiddle.jshell.net/3x6mncxf/4/ – 2014-10-10 20:12:21

回答

1

基于你的jsfiddle,你应该使用ready()而不是load(),它已经从JQuery v1.8开始被弃用了。此代码应该工作:

$('iframe#frame').load(function() { 
    $('iframe#frame').contents().find("head").append($("<style type='text/css'> body{display:none;} </style>")); 
}); 

或者,如果您希望只隐藏一个元素,则始终可以使用css()。

$('iframe#frame').contents().find("body").css("display","none"); 
+0

感谢您的这一点。我应该更具体,虽然我实际上试图插入大量的CSS样式。我只是使用车身显示器:没有一个作为一个快速和肮脏的测试。 – James 2014-10-10 19:50:54

+1

啊,我想我找到了问题。使用ready()而不是load()。我验证了它在你的jsfiddle,它的工作。自v1.8以来,load()已被弃用。 – Jerome 2014-10-10 19:57:51

1

基于从http://api.jquery.com/load-event/

建议尝试

$('iframe#frame').ready(function() { $('iframe#frame').contents().find("head").append($("<style type='text/css'> body{display:none;} </style>"));}); 

它的正常工作使用 “准备”,而不是 “负担”。除了几分钟之外,我可以看到iframe的内容

2

您只需更改代码即可。 而是负载()方法使用现成()方法

$('iframe#frame').ready(function() { 
     $('iframe#frame').contents().find("head").append($("<style type='text/css'> body{display:none;} </style>")); 
}); 

我叉你的的jsfiddle你可以看到演示here