我有一个使用jQuery加载到Yahoo弹出窗口的Ajax控件.
我只是使用一个简单的.get请求来加载HTML.
$.get(contentUrl, null, function(response) {
$('#dialog').find('.bd').assertOne().html(response);
}, "waitDlg");
Run Code Online (Sandbox Code Playgroud)
现在问题是加载的内容需要自己的CSS,实际上是动态创建的.我可以选择内联或使用外部CSS样式表.
在Chrome中进行测试表明,使用上述代码在添加到DOM时,不会评估/应用通过AJAX加载的CSS.
Internet Explorer会评估内联css,因为它只会陷入DOM,但Chrome不会.由于完全不相关的问题,我目前无法在FireFox中进行测试.
有没有办法在jQuery中评估一个动态添加到DOM的样式表作为内联或?
我有很多理由要这样做:
Sho*_*og9 76
给定样式表的路径(或一些将生成有效CSS的URL):
var myStylesLocation = "myStyles.css";
Run Code Online (Sandbox Code Playgroud)
......其中一个应该有效:
$.get(myStylesLocation, function(css)
{
$('<style type="text/css"></style>')
.html(css)
.appendTo("head");
});
Run Code Online (Sandbox Code Playgroud)
$('<link rel="stylesheet" type="text/css" href="'+myStylesLocation+'" >')
.appendTo("head");
Run Code Online (Sandbox Code Playgroud)
$('<style type="text/css"></style>')
.html('@import url("' + myStylesLocation + '")')
.appendTo("head");
Run Code Online (Sandbox Code Playgroud)
要么
$('<style type="text/css">@import url("' + myStylesLocation + '")</style>')
.appendTo("head");
Run Code Online (Sandbox Code Playgroud)
use*_*905 27
接受的答案将不适用于IE 7(以及IE 8中的错误).以下将适用于IE以及FF和chrome/safari:
var url = 'urlOfStyleSheet.css'
if(document.createStyleSheet) {
try { document.createStyleSheet(url); } catch (e) { }
}
else {
var css;
css = document.createElement('link');
css.rel = 'stylesheet';
css.type = 'text/css';
css.media = "all";
css.href = url;
document.getElementsByTagName("head")[0].appendChild(css);
}
Run Code Online (Sandbox Code Playgroud)