用正则表达式 动态创建/增加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 相关文章推荐
jquery 图片预加载 自动等比例缩放插件
Dec 25 Javascript
轻轻松松学JS调试(不下载任何工具)
Apr 14 Javascript
提高jQuery性能的十个诀窍
Nov 14 Javascript
js清理Word格式示例代码
Feb 13 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
Apr 29 Javascript
深入理解jQuery layui分页控件的使用
Aug 17 Javascript
angular使用bootstrap方法手动启动的实例代码
Jul 18 Javascript
基于zepto.js实现登录界面
Oct 09 Javascript
javascript+jQuery实现360开机时间显示效果
Nov 03 jQuery
jQuery实现的解析本地 XML 文档操作示例
Apr 30 jQuery
jQuery实现的上拉刷新功能组件示例
May 01 jQuery
javascript局部自定义鼠标右键菜单
Dec 08 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
thinkPHP+phpexcel实现excel报表输出功能示例
2017/06/06 PHP
thinkPHP框架中layer.js的封装与使用方法示例
2019/01/18 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
为调试JavaScript添加输出窗口的代码
2010/02/07 Javascript
Js注册协议倒计时的小例子
2013/06/24 Javascript
JS中类或对象的定义说明
2014/03/10 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
2016/09/23 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
jQuery实现字符串全部替换的方法【推荐】
2017/03/09 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
js使用原型对象(prototype)需要注意的地方
2017/08/28 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
layui 动态设置checbox 选中状态的例子
2019/09/02 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
Python实现Windows上气泡提醒效果的方法
2015/06/03 Python
python做反被爬保护的方法
2019/07/01 Python
8种用Python实现线性回归的方法对比详解
2019/07/10 Python
决策树剪枝算法的python实现方法详解
2019/09/18 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
2020/02/28 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
联强国际笔试题面试题
2013/07/10 面试题
求职自荐信格式
2013/12/04 职场文书
农场厂长岗位职责
2013/12/28 职场文书
项目合作意向书范本
2014/04/01 职场文书
大学社团招新的通讯稿
2014/09/10 职场文书
入党转正申请报告
2015/05/15 职场文书
详解Nginx 被动检查服务器的存活状态
2021/10/16 Servers
Vue2.0搭建脚手架
2022/03/13 Vue.js