Javascript动态创建 style 节点

有很多提供动态创建 style 节点的方法,但是大多数都仅限于外部的 css 文件。如何能使用程序生成的字符串动态创建 style 节点,我搞了2个小时。 
静态外部 css 文件语法: 
@import url(style.css); 
动态外部 css 文件加载的方法有如下: 
第一种: 
var style = document.createElement(’link’);
style.href = ’style.css’;
style.rel = ’stylesheet’;
style.type = ‘text/css’;
document.getElementsByTagName(’HEAD’).item(0).appendChild(style); 
第二种简单: 
document.createStyleSheet(style.css); 
动态的 style 节点,使用程序生成的字符串: 
var style = document.createElement(’style’);
style.type = ‘text/css’;
style.innerHTML=”body{ }”;
document.getElementsByTagName(’HEAD’).item(0).appendChild(style); 
很遗憾,上面的代码在 ff 里面成功,但是 ie 不支持。从老外论坛得到代码: 
var sheet = document.createStyleSheet();
sheet.addRule(’body’,' 
成功,但是很麻烦,要把字符串拆开写,长一点的写死。 
接着搜,在一个不知道什么国家的什么语言的 blog 上找到代码: 
document.createStyleSheet(”javascript:’body{’”); 
成功,此人实在厉害,但是问题出来了,url 最大 255 个字符,长一点的就不行了,经过 SXPCrazy 提示,改成: 
window.style=”body{”;
document.createStyleSheet(”javascript:style”); 
完美解决!!代码: 
<html> 
<head> 
<script> 
function blue(){ 
if(document.all){ 
window.style="body{"; 
document.createStyleSheet("javascript:style"); 
}else{ 
var style = document.createElement('style'); 
style.type = 'text/css'; 
style.innerHTML="body{  
document.getElementsByTagName('HEAD').item(0).appendChild(style); 


</script> 
</head> 
<body> 
<input type="button" value="blue" onclick="blue();"/> 
</body> 
</html>

posted @ 2015-09-14 14:31  zhishaofei3  阅读(584)  评论(0编辑  收藏  举报