用正则表达式 动态创建/增加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 相关文章推荐
用roll.js实现的图片自动滚动+鼠标触动的特效
Mar 18 Javascript
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
Apr 27 Javascript
javascript jQuery $.post $.ajax用法
Jul 09 Javascript
jquery 多行滚动代码(附详细解释)
Jun 17 Javascript
基于jQuery的Tab选项框效果代码(插件)
Mar 01 Javascript
javascript递归回溯法解八皇后问题
Apr 22 Javascript
javascript基于DOM实现省市级联下拉框的方法
May 14 Javascript
Vue.js实现一个自定义分页组件vue-paginaiton
Sep 05 Javascript
ES6新数据结构Set与WeakSet用法分析
Mar 31 Javascript
浅谈Vue.js中ref ($refs)用法举例总结
Dec 19 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
Feb 02 Javascript
Koa 中的错误处理解析
Apr 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防注
2007/01/15 PHP
php adodb介绍
2009/03/19 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
2016/01/08 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
2017/09/30 PHP
JavaScript null和undefined区别分析
2009/10/14 Javascript
js弹出模式对话框,并接收回传值的方法
2013/03/12 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
JavaScript获取页面中表单(form)数量的方法
2015/04/03 Javascript
js数组依据下标删除元素
2015/04/14 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
js中利用tagname和id获取元素的方法
2016/01/03 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
2016/06/08 Javascript
angularjs $http实现form表单提交示例
2017/06/09 Javascript
JS 组件系列之BootstrapTable的treegrid功能
2017/06/16 Javascript
JS滚动到指定位置导航栏固定顶部
2017/07/03 Javascript
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
JQuery实现table中tr上移下移的示例(超简单)
2018/01/08 jQuery
react-native-video实现视频全屏播放的方法
2018/03/19 Javascript
详解封装基础的angular4的request请求方法
2018/06/05 Javascript
详解设计模式中的工厂方法模式在Python程序中的运用
2016/03/02 Python
python的内存管理和垃圾回收机制详解
2019/05/18 Python
python从内存地址上加载python对象过程详解
2020/01/08 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
2020/04/08 Python
Python Scrapy多页数据爬取实现过程解析
2020/06/12 Python
python如何对链表操作
2020/10/10 Python
HTML5地理定位与第三方工具百度地图的应用
2016/11/17 HTML / CSS
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
男方父母婚礼答谢词
2014/01/25 职场文书
《石榴》教学反思
2014/03/02 职场文书
七一建党日演讲稿
2014/09/05 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
个人租房协议书样本
2014/10/01 职场文书
婚庆开业庆典主持词
2015/06/30 职场文书
快消品行业营销模式与盈利模式分享
2019/09/27 职场文书
2019年共青团工作条例最新版
2019/11/12 职场文书