用正则表达式 动态创建/增加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 技巧
Apr 25 Javascript
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
Dec 20 Javascript
2014最热门的JavaScript代码高亮插件推荐
Nov 25 Javascript
轻量级的原生js日历插件calendar.js使用指南
Apr 28 Javascript
JavaScript的React框架中的JSX语法学习入门教程
Mar 05 Javascript
js实现3d悬浮效果
Feb 16 Javascript
JavaScript代码判断输入的字符串是否含有特殊字符和表情代码实例
Aug 17 Javascript
redux-saga 初识和使用
Mar 10 Javascript
JavaScript实现短暂提示框功能
Apr 04 Javascript
vue-cli中安装方法(图文详细步骤)
Dec 12 Javascript
vue中过滤器filter的讲解
Jan 21 Javascript
react native 仿微信聊天室实例代码
Sep 17 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
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
2012/03/27 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
javascript firefox兼容ie的dom方法脚本
2008/05/18 Javascript
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
2010/04/02 Javascript
JS控制一个DIV层在指定时间内消失的方法
2014/02/17 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
javascript作用域链(Scope Chain)用法实例解析
2015/11/30 Javascript
JavaScript事件 &quot;事件对象&quot;的注意要点
2016/01/14 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
2016/01/19 Javascript
javascript中不易分清的slice,splice和split三个函数
2016/03/29 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
jQuery插件版本冲突的处理方法分析
2017/01/16 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
2017/07/15 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
jQuery实现的页面弹幕效果【测试可用】
2018/08/17 jQuery
vue自定义表单生成器form-create使用详解
2019/07/19 Javascript
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
初学Python函数的笔记整理
2015/04/07 Python
python 多线程实现检测服务器在线情况
2015/11/25 Python
Python3实现并发检验代理池地址的方法
2016/09/18 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
python报错: 'list' object has no attribute 'shape'的解决
2020/07/15 Python
深入了解NumPy 高级索引
2020/07/24 Python
OpenCV灰度化之后图片为绿色的解决
2020/12/01 Python
html5中去掉input type date默认样式的方法
2018/09/06 HTML / CSS
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
机械设计职业生涯规划书
2013/12/27 职场文书
机关门卫的岗位职责
2014/04/29 职场文书
宾馆仓管员岗位职责
2014/07/27 职场文书
公司授权委托书范本
2014/09/18 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
会议室使用管理制度
2015/08/06 职场文书
PHP命令行与定时任务
2021/04/01 PHP
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏