ajax 加载 js
来源:互联网 发布:广州多益网络老板徐波 编辑:程序博客网 时间:2024/04/29 09:33
事件背景
有一个公用页面需要在多个页面调用,其中涉及到部分js已经写在了公用页面中,通过ajax加载该页面后无法执行其中的js。
解决思路
1. 采用附加一个iframe的方法去执行js,为我等代码洁癖者所不齿。
2. 使用document.write输出代码,我等简洁主义者所不愿。
3. 最简单的方法是把js放到需要调用的父页面,那想这样的公用页面,每个地方调用都要写入一次,代码冗余。
4. eval是个解决方法,虽然低效。
5. 复杂的解决方法:正则匹配出加载页面中的所有js,为这些js创建同样多个<script>标签,把js内容插入即可执行。但使用中发现,firefox可行,但IE还是不从。(师太,您就从了吧~)
解决方案 (一)
综合以上多种方式,排除不利因素,总结出一个比较实用的方法,可以满足类似这样公用页面的执行ajax加载的js的需求,在ajax加载的公用函数里面加上代码即可。主要代码如下:
解说下:window.execScript就IE认,其他浏览器需要用eval啦。
至此,算比较完美的解决。
[转自:http://www.impng.com/web-dev/execscript-loaded-by-ajax.html]
解决方案 (二)
执行ajax加载页面中的js总结
2010-12-01 16:40:15| 分类: JavaScript | 标签:ajax 执行 js |字号大中小 订阅
看了《执行ajax加载的页面中包含的javascript》一文,最近刚好被这个问题纠结过,献给痛不欲生的童鞋们…
事件背景
有一个公用页面需要在多个页面调用,其中涉及到部分js已经写在了公用页面中,通过ajax加载该页面后无法执行其中的js。
解决思路
1. 采用附加一个iframe的方法去执行js,为我等代码洁癖者所不齿。
2. 使用document.write输出代码,我等简洁主义者所不愿。
3. 最简单的方法是把js放到需要调用的父页面,那想这样的公用页面,每个地方调用都要写入一次,代码冗余。
4. eval是个解决方法,虽然低效。
5. 复杂的解决方法:正则匹配出加载页面中的所有js,为这些js创建同样多个<script>标签,把js内容插入即可执行。但使用中发现,firefox可行,但IE还是不从。(师太,您就从了吧~)
解决方案
综合以上多种方式,排除不利因素,总结出一个比较实用的方法,可以满足类似这样公用页面的执行ajax加载的js的需求,在ajax加载的公用函数里面加上代码即可。主要代码如下:
// 第一步:匹配加载的页面中是否含有jsvar regDetectJs = /<script(.|\n)*?>(.|\n|\r\n)*?<\/script>/ig;var jsContained = ajaxLoadedData.match(regDetectJs);
// 第二步:如果包含js,则一段一段的取出js再加载执行if(jsContained) {// 分段取出js正则 var regGetJS = /<script(.|\n)*?>((.|\n|\r\n)*)?<\/script>/im;
// 按顺序分段执行js var jsNums = jsContained.length; for (var i=0; i<jsNums; i++) { var jsSection = jsContained[i].match(regGetJS);
if(jsSection[2]) { if(window.execScript) { // 给IE的特殊待遇 window.execScript(jsSection[2]); } else { // 给其他大部分浏览器用的 window.eval_r(jsSection[2]); } } }}
解说下:window.execScript就IE认,其他浏览器需要用eval啦。
至此,算比较完美的解决。
function executeScript(html) {
- ajax动态加载js
- ajax 加载 js
- ajax 加载 页面 执行 js
- Ajax JS Tree 动态加载树形菜单
- 使用Ajax加载页面js不起作用问题
- Scrapy 加载动态数据(js、ajax)
- 常用 ajax js 表单 下拉加载
- 原生js实现ajax异步加载
- ajax请求+vue.js渲染+页面加载
- ajax动态加载js,导致js不执行失效问题
- 解决ajax加载的页面js无法找到的问题
- mvc用js动态加载模拟jquery的.ajax
- EXT AJAX跨域访问之动态加载JS
- ajax js动态加载 密码强度提示 高亮度元素
- ajax 注册事件 页面加载执行js事件
- 动态加载js或ajax跨域通用方法
- 国家,省,市ajax级联加载列表js
- js ajax 加载图片 img的简单方法
- 2011.07.25
- Linux下一个不错的屏幕截图软件 Shutter
- 【我看Spring】IoC映射细节配置
- MySQL innodb碎碎念
- 易语言正则表达式取数据内容
- ajax 加载 js
- Android游戏开发之构建游戏框架View与SurFaceView的区别(十)
- Ubuntu与window XP多启问题
- java中使用protobuf序列化(反序列化)
- 嵌入式LinuxS3C2440上MMC/SD卡驱动实例开发讲解(一)
- flash mina --策略文件問題詳解
- s3c2440的时钟详解
- 不要在功能上竞争
- 使用隐马尔科夫模型Viterbi算法解决词性标注问题