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


Posted in Javascript onMarch 10, 2009

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

Javascript 相关文章推荐
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
Nov 28 Javascript
jquery+javascript编写国籍控件
Feb 12 Javascript
JavaScript更改原始对象valueOf的方法
Mar 19 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
Aug 13 Javascript
js数组如何添加json数据及js数组与json的区别
Oct 27 Javascript
使用JavaScript实现表格编辑器(实例讲解)
Aug 02 Javascript
JS SetInterval 代码实现页面轮询
Aug 11 Javascript
Django使用多数据库的方法
Sep 06 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
Mar 25 jQuery
vue devtools的安装与使用教程
Aug 08 Javascript
在vue中使用vue-echarts-v3的实例代码
Sep 13 Javascript
Node.js实现断点续传
Jun 23 Javascript
Iframe thickbox2.0使用的方法
Mar 05 #Javascript
js 颜色选择器(兼容firefox)
Mar 05 #Javascript
小型js框架veryide.librar源代码
Mar 05 #Javascript
兼容FireFox 的 js 日历 支持时间的获取
Mar 04 #Javascript
javascript radio 联动效果
Mar 04 #Javascript
js 页面执行时间计算代码
Mar 04 #Javascript
[推荐]javascript 面向对象技术基础教程
Mar 03 #Javascript
You might like
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
php变量范围介绍
2012/10/15 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
2013/06/20 PHP
Codeigniter整合Tank Auth权限类库详解
2014/06/12 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
2010/06/28 Javascript
js倒计时抢购实例
2015/12/20 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
2016/01/26 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
jQuery实现图片轮播效果代码
2016/09/27 Javascript
DOM 事件的深入浅出(二)
2016/12/05 Javascript
Bootstrap table简单使用总结
2017/02/15 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
教你用Cordova打包Vue项目的方法
2017/10/17 Javascript
基于Vue自定义指令实现按钮级权限控制思路详解
2018/05/23 Javascript
理顺8个版本vue的区别(小结)
2018/09/17 Javascript
JS实现移动端可折叠导航菜单(现代都市风)
2020/07/07 Javascript
Python中非常实用的一些功能和函数分享
2015/02/14 Python
Python装饰器的函数式编程详解
2015/02/27 Python
对Python中type打开文件的方式介绍
2018/04/28 Python
使用python将请求的requests headers参数格式化方法
2019/01/02 Python
python自定义时钟类、定时任务类
2021/02/22 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
2019/08/20 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
使用pytorch完成kaggle猫狗图像识别方式
2020/01/10 Python
keras的三种模型实现与区别说明
2020/07/03 Python
Python Serial串口基本操作(收发数据)
2020/11/06 Python
白俄罗斯大卖场:21vek.by
2019/07/25 全球购物
毕业生造价工程师求职信
2013/10/17 职场文书
结婚典礼证婚词
2014/01/11 职场文书
公务员培的训心得体会
2014/09/01 职场文书
党支部书记岗位职责
2015/02/15 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书
小学数学国培研修日志
2015/11/13 职场文书
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang