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

 更新时间:2009年03月10日 00:42:18   作者:  
动态创建/增加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);
}
}
}

相关文章

  • 微信小程序自定义导航栏功能的实现

    微信小程序自定义导航栏功能的实现

    本文介绍了微信小程序自定义导航栏功能的实现方法,首先,需要去掉原生导航栏,可以通过在page.json中去掉navigationBarTitleText并加上"navigationStyle":"custom"来实现,然后,可以使用组件封装来实现自定义导航栏的功能,感兴趣的朋友一起看看吧
    2025-01-01
  • JavaScript 巧学巧用

    JavaScript 巧学巧用

    本文主要给大家分享一下在编写JavaScript代码的时候存在的一些方法和技巧,虽然有时候条条大路都通向罗马,但是也许总会有那么一条最短的路径可走。希望通过以下几点JavaScript技巧让大家的代码“化繁为简,化简为精”
    2017-05-05
  • javascript将16进制的字符串转换为10进制整数hex

    javascript将16进制的字符串转换为10进制整数hex

    这篇文章主要介绍了javascript将16进制的字符串转换为10进制整数hex,需要的朋友可以参考下
    2020-03-03
  • 使用JavaScript实现一个录屏插件

    使用JavaScript实现一个录屏插件

    不知道大家平时都是使用什么录屏软件呢,有没有想过只用JavaScript我们也可以快速实现一个录屏插件呢,感兴趣的小伙伴就跟随小编一起学习一下吧
    2024-10-10
  • 支付宝小程序tabbar底部导航

    支付宝小程序tabbar底部导航

    这篇文章主要为大家详细介绍了支付宝小程序重写tabbar底部导航,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • 漂亮实用的页面loading(加载)封装代码

    漂亮实用的页面loading(加载)封装代码

    要做一个异步登录,打算给用户做一点提示,所以就网上找了点代码,自己修改新增了一些,做了一个html+css+js的功能封装,供大家参考,需要的朋友参考下吧
    2017-02-02
  • js实现tab切换效果

    js实现tab切换效果

    本文主要分享了js封装一个tab切换效果的示例代码,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • 不使用ajax实现无刷新提交表单

    不使用ajax实现无刷新提交表单

    这篇文章主要介绍了不使用ajax实现无刷新提交表单的方法,需要的朋友可以参考下
    2014-12-12
  • TypeScript中Array(数组)声明与简单使用方法

    TypeScript中Array(数组)声明与简单使用方法

    这篇文章主要给大家介绍了关于TypeScript中Array(数组)声明与简单使用的相关资料,TypeScript Array(数组)数组对象是使用单独的变量名来存储一系列的值,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • javascript 获取链接文件地址中第一个斜线内的正则表达式

    javascript 获取链接文件地址中第一个斜线内的正则表达式

    我想得到“windows”,请问用正则表达式怎么写?
    2009-06-06

最新评论