用正则表达式 动态创建/增加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 相关文章推荐
不错的一个日期输入 动态
Nov 06 Javascript
js监听表单value的修改同步问题,跨浏览器支持
Dec 31 Javascript
jquery $(&quot;#variable&quot;) 循环改变variable的值示例
Feb 23 Javascript
标题过长使用javascript按字节截取字符串
Apr 24 Javascript
ext前台接收action传过来的json数据示例
Jun 17 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
Jun 23 Javascript
JS实现可调整倒计时间代码分享
Aug 18 Javascript
JS动态添加iframe的代码
Sep 14 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
Jan 05 Javascript
angular.js分页代码的实例
Jul 27 Javascript
Node.js 中使用 async 函数的方法
Nov 20 Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
Aug 22 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 daodb插入、更新与删除数据
2009/03/19 PHP
php实现小程序支付完整版
2018/10/09 PHP
jQuery Ajax 实例全解析
2011/04/20 Javascript
基于jquery插件制作左右按钮与标题文字图片切换效果
2013/11/07 Javascript
javaScript中的this示例学习详解及工作原理
2014/01/13 Javascript
常用的几段javascript代码分享
2014/03/25 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
2015/04/06 Javascript
JavaScript开发Chrome浏览器扩展程序UI的教程
2016/05/16 Javascript
js中class的点击事件没有效果的解决方法
2016/10/13 Javascript
纯JavaScript实现实时反馈系统时间
2017/10/26 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
2020/08/03 Javascript
python抓取百度首页的方法
2015/05/19 Python
Django查询数据库的性能优化示例代码
2017/09/24 Python
python实现随机梯度下降(SGD)
2020/03/24 Python
对Python中range()函数和list的比较
2018/04/19 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
python面试题之列表声明实例分析
2019/07/08 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
pytorch GAN生成对抗网络实例
2020/01/10 Python
Python CSS选择器爬取京东网商品信息过程解析
2020/06/01 Python
Python同时迭代多个序列的方法
2020/07/28 Python
详解css3 object-fit属性
2018/07/27 HTML / CSS
纯HTML5+CSS3制作图片旋转
2016/01/12 HTML / CSS
全球在线商店:BerryLook
2019/04/14 全球购物
阿联酋彩妆品牌:OUD MILANO
2019/10/06 全球购物
Java Servlet API中forward() 与redirect()的区别
2014/04/20 面试题
装潢设计实习自我鉴定
2013/09/19 职场文书
文明学生事迹材料
2014/01/29 职场文书
2014两会学习心得:时代的发展
2014/03/17 职场文书
大学活动总结模板
2014/07/10 职场文书
学校办公室主任岗位职责
2015/04/01 职场文书
面试通知短信
2015/04/20 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书
解决Python保存文件名太长OSError: [Errno 36] File name too long
2022/05/11 Python
vue3不同环境下实现配置代理
2022/05/25 Vue.js