用正则表达式 动态创建/增加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 相关文章推荐
使用按钮控制以何种方式打开新窗口的属性介绍
Dec 17 Javascript
JS获得URL超链接的参数值实例代码
Jun 21 Javascript
动态加载脚本提升javascript性能
Feb 24 Javascript
Javascript中实现trim()函数的两种方法
Feb 04 Javascript
js获取及判断键盘按键的方法
Dec 01 Javascript
整理关于Bootstrap警示框的慕课笔记
Mar 29 Javascript
JavaScript之promise_动力节点Java学院整理
Jul 03 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
Aug 31 Javascript
微信小程序实现长按删除图片的示例
May 18 Javascript
200行HTML+JavaScript实现年会抽奖程序
Jan 22 Javascript
JavaScript简单编程实例学习
Feb 14 Javascript
vue使用refs获取嵌套组件中的值过程
Mar 31 Vue.js
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
ZF等常用php框架中存在的问题
2008/01/10 PHP
php调用google接口生成二维码示例
2014/04/28 PHP
PHP读取zip文件的方法示例
2016/11/17 PHP
jQuery帮助之筛选查找 children([expr])
2011/01/31 Javascript
jquery向.ashx文件post中文乱码问题的解决方法
2011/03/28 Javascript
javascript (用setTimeout而非setInterval)
2011/12/28 Javascript
利用javascript打开模态对话框(示例代码)
2014/01/11 Javascript
购物车选中得到价格实现示例
2014/01/26 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
调整小数的格式保留小数点后两位
2014/05/14 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
2015/09/14 Javascript
JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
2016/03/25 Javascript
jquery输入数字随机抽奖特效的简单实现代码
2016/06/10 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
2016/08/09 Javascript
AngularJS入门教程之迭代器过滤详解
2016/08/18 Javascript
深入理解javascript的getTime()方法
2017/02/16 Javascript
BootStrap fileinput.js文件上传组件实例代码
2017/02/20 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
实例解析Vue.js下载方式及基本概念
2018/05/11 Javascript
JS实现将二维数组转为json格式字符串操作示例
2018/07/12 Javascript
vue.js中toast用法及使用toast弹框的实例代码
2018/08/27 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
2019/09/20 Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
2020/04/16 Javascript
python文件写入实例分析
2015/04/08 Python
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
pyqt5简介及安装方法介绍
2018/01/31 Python
python通过tcp发送xml报文的方法
2018/12/28 Python
俄罗斯大型在线书店:Читай-город
2019/10/10 全球购物
Aurora London官网:奢华、负担得起的皮革手袋
2020/08/01 全球购物
污染环境建议书
2015/09/14 职场文书
周一问候语大全
2015/11/10 职场文书
php+laravel 扫码二维码签到功能
2021/05/15 PHP
MySQL日期时间函数知识汇总
2022/03/17 MySQL