用正则表达式 动态创建/增加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 相关文章推荐
javascript读取RSS数据
Jan 20 Javascript
javascript 获取页面的高度及滚动条的位置的代码
May 06 Javascript
浅谈JavaScript编程语言的编码规范
Oct 21 Javascript
javascript模拟map输出与去除重复项的方法
Feb 09 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
Oct 26 Javascript
详解Node.js开发中的express-session
May 19 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
Sep 13 Javascript
JS使用贪心算法解决找零问题示例
Nov 27 Javascript
webpack搭建vue 项目的步骤
Dec 27 Javascript
详解为生产环境编译Angular2应用的方法
Dec 10 Javascript
对于防止按钮重复点击的尝试详解
Apr 22 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
Aug 09 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 fgetcsv 定义和用法(附windows与linux下兼容问题)
2012/05/29 PHP
php获取文件大小的方法
2014/02/26 PHP
PHP中时间加减函数strtotime用法分析
2017/04/26 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
2019/10/09 PHP
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
JS实现生成会变大变小的圆环实例
2015/08/05 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
JS实现的样式切换功能tableCSS实例
2016/12/30 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
Vue-router 切换组件页面时进入进出动画方法
2018/09/01 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
2019/04/25 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
原生js滑动轮播封装
2020/07/31 Javascript
手动实现vue2.0的双向数据绑定原理详解
2021/02/06 Vue.js
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
Python2中文处理纪要的实现方法
2018/03/10 Python
python 删除指定时间间隔之前的文件实例
2018/04/24 Python
Python离线安装PIL 模块的方法
2019/01/08 Python
python实现趣味图片字符化
2019/04/30 Python
Django 开发环境配置过程详解
2019/07/18 Python
Python 实现取多维数组第n维的前几位
2019/11/26 Python
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
如何在Canvas上的图形/图像绑定事件监听的实现
2020/09/16 HTML / CSS
Tech21美国/加拿大:英国NO.1防摔保护壳品牌
2018/01/20 全球购物
优秀毕业生推荐信
2013/11/02 职场文书
卫校毕业生个人自我鉴定
2014/04/28 职场文书
优秀护士先进事迹
2014/05/08 职场文书
2014年安全员工作总结
2014/11/13 职场文书
2014年村委会工作总结
2014/11/24 职场文书
房屋认购协议书
2015/01/29 职场文书
2015年秋季开学典礼校长致辞
2015/07/16 职场文书
如何用RabbitMQ和Swoole实现一个异步任务系统
2021/05/29 PHP
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android
Python中time标准库的使用教程
2022/04/13 Python
ubuntu如何搭建vsftpd服务器
2022/12/24 Servers