zl程序教程

您现在的位置是:首页 >  前端

当前栏目

用正则表达式动态创建/增加cssstylescript兼容IEfirefox

正则表达式 增加 兼容 动态创建
2023-06-13 09:14:08 时间
str是表示通过ajax返回的XMLRequest
/*动态加载cssstyle*/
functionloadStyle(str)
{
varregExp_src=/<style.*src\s*=\s*[""][^""]*[""].*>[^<>]*<\/style\s*>/gi;
varmatchArray_src=str.match(regExp_src);
alert(matchArray_src[0]);
if(matchArray_src){
for(vari=0;i<matchArray_src.length;i++)
{alert("sss");
varstr_temp=matchArray_src[i].toString();
varregExp_src_temp=/<style.*src\s*=\s*[""]([^""]*)[""].*>[^<>]*<\/style\s*>/gi;
str_temp.match(regExp_src_temp);/*这里重复使用匹配是为了,$1这个子表达式指向当前的值,否则会永远是最后一个$1值*/
varhead=document.getElementsByTagName("head")[0];
/*IE*/
if(document.all){
alert("IE");
if(document.getElementsByTagName("style")[0])
{
varsty=document.getElementsByTagName("style")[0].innerHTML;
alert(sty);
varsty=document.getElementsByTagName("style")[0].innerHTML;
//不知道怎么样取得IE当前的style标签,用getElementsByTagName不行,只能采此下策,创建一个新的,并加上以前的样式
varstyleSheet=document.createStyleSheet();
styleSheet.cssText=sty+RegExp.$1;
}
else
{
varstyleSheet=document.createStyleSheet();
styleSheet.cssText="body{background:red;}\<br\>"
alert("finished");
}
}
/*FIREFOX*/
else{
varstyle;
if(document.getElementsByTagName("style")[0])
{
varsty=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*/
functionloadScript_src(str){
varregExp_src=/<script.*src\s*=\s*[""][^""]*[""].*>[^<>]*<\/script\s*>/gi;
varmatchArray_src=str.match(regExp_src);
if(matchArray_src)
{
for(vari=0;i<matchArray_src.length;i++)
{
varstr_temp=matchArray_src[i].toString();
varregExp_src_temp=/<script.*src\s*=\s*[""]([^""]*)[""].*>[^<>]*<\/script\s*>/gi;
str_temp.match(regExp_src_temp);
varhead=document.getElementsByTagName("head")[0];
varscript=document.createElement("script");
script.type="text/javascript";
script.src=RegExp.$1;
script.defer="true";
head.appendChild(script);
alert(RegExp.$1);
}
}
}
/*动态加载innerHTML中的Script*/
functionloadScript(str){
varregExp_function=/<script[^>]*>([\s\S]*?)<\/script[\s]*>/gi;
varmatchArray_function=str.match(regExp_function);
if(matchArray_function){
for(vari=0;i<matchArray_function.length;i++){
varstr_temp=matchArray_function[i].toString();//其实用正则表达式的向前向后查找的话是很方便的,但javascript却不支持,所以只能采取此下策
varregExp_function_temp=/<script[^>]*>([\s\S]*?)<\/script[\s]*>/gi;
varmatchArray_temp=str_temp.match(regExp_function_temp);
eval(RegExp.$1);
}
}
}