用正则表达式 动态创建/增加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 数组排序函数
Aug 20 Javascript
JavaScript Chart 插件整理
Jun 18 Javascript
jQuery EasyUI 的EasyLoader功能介绍
Sep 12 Javascript
jQuery源码分析-04 选择器-Sizzle-工作原理分析
Nov 14 Javascript
eclipse如何忽略js文件报错(附图)
Oct 30 Javascript
Extjs grid panel自带滚动条失效的解决方法
Sep 11 Javascript
基于JavaScript实现前端文件的断点续传
Oct 17 Javascript
微信小程序 页面之间传参实例详解
Jan 13 Javascript
jQuery基本筛选选择器实例代码
Feb 06 Javascript
js 倒计时(高效率服务器时间同步)
Sep 12 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
Sep 26 Javascript
vue cli3.0结合echarts3.0与地图的使用方法示例
Mar 26 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
PHPMailer邮件类利用smtp.163.com发送邮件方法
2008/09/11 PHP
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
PHP实现留言板功能的详细代码
2017/03/25 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
2020/04/26 PHP
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
jquery下实现overlay遮罩层代码
2010/08/25 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
2013/06/26 Javascript
jquery html动态生成select标签出问题的解决方法
2013/11/20 Javascript
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
js利用prototype调用Array的slice方法示例
2014/06/09 Javascript
浅谈javascript的调试
2015/01/28 Javascript
Underscore.js常用方法总结
2015/02/28 Javascript
JavaScript数组和循环详解
2015/04/27 Javascript
JS实现上下左右对称的九九乘法表
2016/02/22 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
浅谈Vue-cli 命令行工具分析
2017/11/22 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
原生js实现公告滚动效果
2021/01/10 Javascript
JavaScript ES6箭头函数使用指南
2018/12/30 Javascript
解决vue-cli 打包后自定义动画未执行的问题
2019/11/12 Javascript
javascript设计模式 ? 职责链模式原理与用法实例分析
2020/04/16 Javascript
解决echarts数据二次渲染不成功的问题
2020/07/20 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
[01:00] DOTA2英雄背景故事第五期之重力引力法则谜团
2020/07/16 DOTA
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
学习python (1)
2006/10/31 Python
python 输出一个两行字符的变量
2009/02/05 Python
Python常用内置模块之xml模块(详解)
2017/05/23 Python
Java及python正则表达式详解
2017/12/27 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
Python reversed函数及使用方法解析
2020/03/17 Python
医学专业大学生求职的自我评价
2013/11/27 职场文书
业务总经理岗位职责
2014/02/03 职场文书
2014年信用社工作总结
2014/11/25 职场文书
法定代表人免职证明
2015/06/24 职场文书
保护环境的宣传语
2015/07/13 职场文书