当前位置: 首页 > 图文教程 > 网络编程 > Javascript > 用正则表达式 动态创建/增加css style script 兼容IE firefox

Javascript
Javascript入门学习第六篇 js DOM编程
Javascript入门学习第七篇 js dom实例操作
Javascript入门学习第八篇 js dom节点属性说明
Javascript入门学习第九篇 Javascript DOM 总结
Javascript入门学习资料收集整理篇
超级退弹代码
Firefox和IE浏览器兼容JS脚本写法小结
SWFObject Flash js调用类
javascript同步Import,同步调用外部js的方法
javascript jQuery $.post $.ajax用法
JS location几个方法小姐
关于树形菜单 Checkbox的全选
JS的数组的扩展实例代码
兼容ie ff div 层 打开+关闭+ 拖动+遮罩+移动+动画改变高宽
javascript 拽拉效果 供JS初学者学习参考
纯js实现的论坛常用的运行代码的效果
js显示当前星期的起止日期的脚本
神奇的代码 通杀各种网站-可随意修改复制页面内容
js番茄的表单验证类
番茄的表单验证类代码修改版

Javascript 中的 用正则表达式 动态创建/增加css style script 兼容IE firefox


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-12   浏览: 303 ::
收藏到网摘: n/a

动态创建/增加css style script 用正则表达式 兼容IE firefox str 是表示通过ajax返回的XMLRequest
/*动态加载css style*/
function loadStyle(str)
{
var regExp_src=/<style.*src\s*=\s*["'][^"']*["'].*>[^<>]*<\/style\s*>/gi;
var matchArray_src=str.match(regExp_src);
alert(matchArray_src[0]);
if(matchArray_src){
for(var i=0;i<matchArray_src.length;i++)
{alert("sss");
var str_temp = matchArray_src[i].toString();
var regExp_src_temp = /<style.*src\s*=\s*["']([^"']*)["'].*>[^<>]*<\/style\s*>/gi;
str_temp.match(regExp_src_temp);/*这里重复使用匹配是为了,$1这个子表达式指向当前的值,否则会永远是最后一个$1值*/
var head = document.getElementsByTagName('head')[0];
/*IE*/
if(document.all){
alert("IE");
if(document.getElementsByTagName('style')[0])
{
var sty=document.getElementsByTagName('style')[0].innerHTML;
alert(sty);
var sty = document.getElementsByTagName('style')[0].innerHTML;
//不知道怎么样取得IE当前的style标签,用getElementsByTagName不行,只能采此下策,创建一个新的,并加上以前的样式
var styleSheet = document.createStyleSheet();
styleSheet.cssText=sty+RegExp.$1;
}
else
{
var styleSheet = document.createStyleSheet();
styleSheet.cssText="body{background:red;}\<br\>"
alert("finished");
}
}
/*FIREFOX*/
else{
var style;
if(document.getElementsByTagName('style')[0])
{
var sty=document.getElementsByTagName('style')[0].innerHTML;
alert(sty);
document.getElementsByTagName('style')[0].innerHTML=sty+RegExp.$1;
}
else
style=document.createElement('style');
style.type = 'text/css';
style.innerHTML=RegExp.$1;
head.appendChild(style);
alert(RegExp.$1);
}
}
}
}
/*动态加载具有src属性的script*/
function loadScript_src(str){
var regExp_src=/<script.*src\s*=\s*["'][^"']*["'].*>[^<>]*<\/script\s*>/gi;
var matchArray_src=str.match(regExp_src);
if(matchArray_src)
{
for(var i=0;i<matchArray_src.length;i++)
{
var str_temp = matchArray_src[i].toString();
var regExp_src_temp = /<script.*src\s*=\s*["']([^"']*)["'].*>[^<>]*<\/script\s*>/gi;
str_temp.match(regExp_src_temp);
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = RegExp.$1;
script.defer="true";
head.appendChild(script);
alert(RegExp.$1);
}
}
}
/*动态加载innerHTML 中的Script*/
function loadScript(str){
var regExp_function=/<script[^>]*>([\s\S]*?)<\/script[\s]*>/gi;
var matchArray_function=str.match(regExp_function);
if(matchArray_function){
for(var i=0;i<matchArray_function.length;i++){
var str_temp=matchArray_function[i].toString();//其实用正则表达式的向前向后查找的话是很方便的,但javascript却不支持,所以只能采取此下策
var regExp_function_temp=/<script[^>]*>([\s\S]*?)<\/script[\s]*>/gi;
var matchArray_temp=str_temp.match(regExp_function_temp);
eval(RegExp.$1);
}
}
}