用正则表达式 动态创建/增加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);

  }

  }

  }