使用CSS来影响iframe中的div风格
是否有可能改变使用CSS的页面内的iframe中的div的样式?
你需要JavaScript。 这与在父页面中执行的操作是一样的,除了必须在JavaScript命令前加上iframe的名称。
请记住,应用相同的原始策略,因此只能对来自您自己的服务器的iframe元素执行此操作。
我使用Prototype框架使其更容易:
frame1.$('mydiv').style.border = '1px solid #000000'
要么
frame1.$('mydiv').addClassName('withborder')
总之没有。
除非由于跨域资源限制而无法控制iframe中加载的页面,否则不能将CSS应用于加载到iframe中的HTML。
是。 看看这个其他线程的细节: 如何将CSS应用到iframe?
var cssLink = document.createElement("link"); cssLink.href = "style.css"; cssLink.rel = "stylesheet"; cssLink.type = "text/css"; frames['frame1'].document.body.appendChild(cssLink);
您可以先检索iframe
的内容,然后照常使用jQuery
select器。
$("#iframe-id").contents().find("img").attr("style","width:100%;height:100%") $("#iframe-id").contents().find("img").addClass("fancy-zoom") $("#iframe-id").contents().find("img").onclick(function(){ zoomit($(this)); });
祝你好运!
使用jquery并等待源代码加载,这是我已经实现的(使用angular度区间,可以使用javascript setInterval方法):
var addCssToIframe = function() { if ($('#myIframe').contents().find("head") != undefined) { $('#myIframe') .contents() .find("head") .append( '<link rel="stylesheet" href="app/css/iframe.css" type="text/css" />'); $interval.cancel(addCssInterval); } }; var addCssInterval = $interval(addCssToIframe, 500, 0, false);
快速的回答是:不,对不起。
仅仅使用CSS是不可能的。 你基本上需要控制iframe的内容,以便devise它。 有一些方法使用JavaScript或您select的Web语言(我已经读了一些,但不熟悉自己)dynamic插入一些需要的样式,但是您需要直接控制iframe的内容,像你没有。
可能不像你在想什么。 iframe也必须在<link>
css文件中<link>
。 如果它位于不同的域名,那么即使使用JavaScript也无法做到这一点。
显然它可以通过jQuery完成:
$('iframe').load( function() { $('iframe').contents().find("head") .append($("<style type='text/css'> .my-class{display:none;} </style>")); });
是的,尽pipe很麻烦,但这是可能的。 您需要将页面的HTML打印/回显到页面正文中,然后应用CSS规则更改function。 使用上面给出的相同的例子,你将基本上使用在页面中finddiv的parsing方法,然后将CSS应用到它,然后重新打印/回显给最终用户。 我不需要这个,所以我不想将这个函数编码到另一个网页的CSS中的每一个项目中。
参考文献:
- 打印IFRAME的内容
- 使用PHP或JavaScript访问和打印HTML源代码
- http://www.w3schools.com/js/js_htmldom_html.asp
- http://www.w3schools.com/js/js_htmldom_css.asp
就像尤金说的那样,一种黑客行事的方式就是如此。 我结束了他的代码,并链接到我的自定义Css的页面。 对于我来说,问题是,有了twitter的时间表,你必须做一些微博的迂回,以覆盖他们的代码smidgen。 现在我们有一个与我们的CSS的滚动时间线,IE更大的字体,适当的线条高度,并使滚动条隐藏高于他们的极限高度。
var c = document.createElement('link'); setTimeout(frames[0].document.body.appendChild(c),500); // Mileage varies by connection. Bump 500 a bit higher if necessary
不可能从客户端。 一个JavaScript错误将会引发“错误:权限被拒绝访问属性”文档“”,因为iframe不是你的domaine的一部分。 唯一的解决办法是从服务器端代码获取页面,并更改所需的CSS。