用jQuery添加css文件

我创build一个popupwindow,我想添加一个css文件到这个popupwindow下面是popupwindow的代码。 我有一个JavaScript创build一个popupwindow。

<a href="popupwindowcontent.xhtml" title="Print" class="popupwindow">Print1</a> 

现在我想添加一个css文件到这个popupwindow。 我试过类似的东西

 $('.popupwindow').append('<link rel="stylesheet" href="css/style2.css" type="text/css" />'); $('head').append('<link rel="stylesheet" href="css/style2.css" type="text/css" />'); 

但没有工作。

谢谢

 $('head').append('<link rel="stylesheet" href="style2.css" type="text/css" />'); 

这应该工作。

这是我如何使用jQuery ajax添加css。 希望它可以帮助别人..

 $.ajax({ url:"site/test/style.css", success:function(data){ $("<style></style>").appendTo("head").html(data); } }) 
  var css_link = $("<link>", { rel: "stylesheet", type: "text/css", href: "yourcustomaddress/bundles/andreistatistics/css/like.css" }); css_link.appendTo('head'); 

只是我的夫妇美分…有时确定没有任何重复是很好的…所以我们在utils库中有下一个function:

 jQuery.loadCSS = function(url) { if (!$('link[href="' + url + '"]').length) $('head').append('<link rel="stylesheet" type="text/css" href="' + url + '">'); } 

如何使用:

 $.loadCSS('css/style2.css'); 

你的问题是你的select器是一个锚元素<a> 。 你正在对待<a>标签,就好像它代表的页面不是这种情况。

只要这个select器正在被需要css的页面执行, $('head')就会工作。

为什么不简单地将CSS文件添加到有问题的页面。 任何特定的原因,尝试从另一个页面dynamic的? 我甚至不熟悉像这样的远程页面注入CSS的方式…似乎这将是一个重大的安全漏洞。

附加到你的推理:

那么你应该简单地传递一个参数到页面,使用javascript读取它,然后根据参数做任何需要的操作。

试着用相反的方法来做。

 $('<link rel="stylesheet" href="css/style2.css" type="text/css" />').appendTo('head'); 

我不认为你可以附加到一个窗口,你实例…我知道你不能这样做,如果url是在不同的领域(XSS和爵士乐),但你可以从那个窗口说话并假定它们在相同的域上访问父窗口的元素。 你最好的办法是把样式表附加到你正在加载的页面上,如果这个页面不在同一个域中(例如试图重新编译一个页面),你将无法做到这一点。

你有没有尝试过简单地使用媒体属性为你的CSS参考?

 <link rel="stylesheet" href="css/style2.css" media="print" type="text/css" /> 

或者,如果您不希望打印版本使用样式,请将其设置为屏幕:

 <link rel="stylesheet" href="css/style2.css" media="screen" type="text/css" /> 

这样你就不需要dynamic地添加它。