作家
登录

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

作者: 来源:www.28hudong.com 2013-03-30 02:42:29 阅读 我要评论

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); } } }

  推荐阅读

  InnerHtml和InnerText的区别分析

最详细的解答可以参见MSDN InnerTexthttp://msdn.microsoft.com/zh-cn/library/system.web.ui.htmlcontrols.htmlcontainercontrol.innertext.aspx InnerHtmlhttp://msdn.microsoft.com/zh-cn/library/system.web.u>>>详细阅读


本文标题:用正则表达式 动态创建/增加css style script 兼容IE firefox

地址:http://www.17bianji.com/kaifa2/JS/28915.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)