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{ background-color:blue; }”;
document.getElementsByTagName(’HEAD’).item(0).appendChild(style);

很遗憾,上面的代码在 ff 里面成功,但是 ie 不支持。从老外论坛得到代码:

var sheet = document.createStyleSheet();
sheet.addRule(’body’,'background-color:red’);

成功,但是很麻烦,要把字符串拆开写,长一点的写死。

接着搜,在一个不知道什么国家的什么语言的 blog 上找到代码:

document.createStyleSheet(”javascript:’body{background-color:blue;’”);

成功,此人实在厉害,但是问题出来了,url 最大 255 个字符,长一点的就不行了,经过 SXPCrazy 提示,改成:

window.style=”body{background-color:blue;”;
document.createStyleSheet(”javascript:style”);

完美解决!!代码:

<html>
<head>
<script>
function blue(){
if(document.all){
window.style="body{background-color:blue;";
document.createStyleSheet("javascript:style");
}else{
var style = document.createElement('style');
style.type = 'text/css';
style.innerHTML="body{ background-color:blue }";
document.getElementsByTagName('HEAD').item(0).appendChild(style);
}
}
</script>
</head>
<body>
<input type="button" value="blue" onclick="blue();"/>
</body>
</html>



相关阅读:
如何解决Linux操作系统中putty乱码问题
一些收集整理非常不错的JS效果代码
HTML5是什么?如何鉴定HTML5产品?
ASP通用分页类
WEB标准:网页页面结构
删除Linux系统下的历史记录
IP攻击升级,程序改进以对付新的攻击
用PHP实现小型站点广告管理(修正版)
css 限定GridView宽度并加上滚动条
Oracle中操作系统优化和使用资源管理器
为什么要学习Hibernate?
Win2008、Vista驱动兼容问题的解决
php自动获取目录下的模板的代码
Vista系统设置技巧:定制个性化右键菜单
快速导航

Copyright © 2016 phpStudy |