用正则表达式 动态创建/增加css style script 兼容IE firefox_Javascript教程-查字典教程网
用正则表达式 动态创建/增加css style script 兼容IE firefox
用正则表达式 动态创建/增加css style script 兼容IE firefox
发布时间:2016-12-30 来源:查字典编辑
摘要:str是表示通过ajax返回的XMLRequest/*动态加载cssstyle*/functionloadStyle(str){varreg...

str 是表示通过ajax返回的XMLRequest

/*动态加载css style*/

function loadStyle(str)

{

var regExp_src=/<style.*srcs*=s*["'][^"']*["'].*>[^<>]*</styles*>/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.*srcs*=s*["']([^"']*)["'].*>[^<>]*</styles*>/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.*srcs*=s*["'][^"']*["'].*>[^<>]*</scripts*>/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.*srcs*=s*["']([^"']*)["'].*>[^<>]*</scripts*>/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[^>]*>([sS]*?)</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[^>]*>([sS]*?)</script[s]*>/gi;

var matchArray_temp=str_temp.match(regExp_function_temp);

eval(RegExp.$1);

}

}

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类