用正则表达式 动态创建/增加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 获取网页标题代码实例
Jan 22 Javascript
仿百度联盟对联广告实现代码
Aug 30 Javascript
JS版微信6.0分享接口用法分析
Oct 13 Javascript
适用于手机端的jQuery图片滑块动画
Dec 09 Javascript
JS正则表达式验证中文字符
May 08 Javascript
AngularJs每天学习之总体介绍
Aug 07 Javascript
js数字滑动时钟的简单实现(示例讲解)
Aug 14 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
Dec 29 jQuery
vue实现微信分享链接添加动态参数的方法
Apr 29 Javascript
原生JS实现列表内容自动向上滚动效果
May 22 Javascript
jQuery HTML设置内容和属性操作实例分析
May 20 jQuery
webpack介绍使用配置教程详解webpack介绍和使用
Jun 25 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
mysql 全文搜索 技巧
2007/04/27 PHP
FCKeditor添加自定义按钮
2008/03/27 PHP
比较简单的百度网盘文件直链PHP代码
2013/03/24 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
CI框架中cookie的操作方法分析
2014/12/12 PHP
在PHP中使用FastCGI解析漏洞及修复方案
2015/11/10 PHP
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
js中取得变量绝对值的方法
2015/01/03 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
javascript绘制漂亮的心型线效果完整实例
2016/02/02 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
2016/04/20 Javascript
jQuery unbind 删除绑定事件详解
2016/05/24 Javascript
Vuejs第十篇之vuejs父子组件通信
2016/09/06 Javascript
使用JavaScript获取Request中参数的值方法
2016/09/27 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
vue中简单弹框dialog的实现方法
2018/02/26 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
nodejs语言实现验证码生成功能的示例代码
2019/10/13 NodeJs
js实现录音上传功能
2019/11/22 Javascript
微信小程序实现底部弹出框
2020/11/18 Javascript
Python 备份程序代码实现
2017/03/06 Python
用pickle存储Python的原生对象方法
2017/04/28 Python
老生常谈Python进阶之装饰器
2017/05/11 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
使用Python进行目录的对比方法
2018/11/01 Python
python3 字符串知识点学习笔记
2020/02/08 Python
python3检查字典传入函数键是否齐全的实例
2020/06/05 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
python使用matplotlib:subplot绘制多个子图的示例
2020/09/24 Python
python如何修改文件时间属性
2021/02/05 Python
String这个类型的class为何定义成final?
2012/11/13 面试题
毕业生找工作的自我评价
2013/10/18 职场文书
公务员个人考察材料
2014/12/23 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
原生JS中应该禁止出现的写法
2021/05/05 Javascript