最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Ajax 动态载入html页面后不能执行其中的js快速解决方法

来源:懂视网 责编:小采 时间:2020-11-27 22:51:29
文档

Ajax 动态载入html页面后不能执行其中的js快速解决方法

Ajax 动态载入html页面后不能执行其中的js快速解决方法:事件背景 有一个公用页面需要在多个页面调用,其中涉及到部分js已经写在了公用页面中,通过ajax加载该页面后无法执行其中的js。 解决思路 1. 采用附加一个iframe的方法去执行js,为我等代码洁癖者所不齿。 2. 使用document.write输出代码,我等简洁主义
推荐度:
导读Ajax 动态载入html页面后不能执行其中的js快速解决方法:事件背景 有一个公用页面需要在多个页面调用,其中涉及到部分js已经写在了公用页面中,通过ajax加载该页面后无法执行其中的js。 解决思路 1. 采用附加一个iframe的方法去执行js,为我等代码洁癖者所不齿。 2. 使用document.write输出代码,我等简洁主义

事件背景

有一个公用页面需要在多个页面调用,其中涉及到部分js已经写在了公用页面中,通过ajax加载该页面后无法执行其中的js。

解决思路

1. 采用附加一个iframe的方法去执行js,为我等代码洁癖者所不齿。

2. 使用document.write输出代码,我等简洁主义者所不愿。

3. 最简单的方法是把js放到需要调用的父页面,那想这样的公用页面,每个地方调用都要写入一次,代码冗余。

4. eval是个解决方法,虽然低效。

5. 复杂的解决方法:正则匹配出加载页面中的所有js,为这些js创建同样多个<script>标签,把js内容插入即可执行。但使用中发现,firefox可行,但IE还是不从。(师太,您就从了吧~)

解决方案

综合以上多种方式,排除不利因素,总结出一个比较实用的方法,可以满足类似这样公用页面的执行ajax加载的js的需求,在ajax加载的公用函数里面加上代码即可。主要代码如下:

// 第一步:匹配加载的页面中是否含有js
var regDetectJs = /<script(.|\n)*?>(.|\n|\r\n)*?<\/script>/ig;
var jsContained = ajaxLoadedData.match(regDetectJs); //ajaxLoadedData为ajax获取到的数据
// 第二步:如果包含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(jsSection[2]);
 }
 }
 }
}

解说下:window.execScript就IE认,其他浏览器需要用eval啦。

总结

以上所述是小编给大家介绍的Ajax 动态载入html页面后不能执行其中的js快速解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

文档

Ajax 动态载入html页面后不能执行其中的js快速解决方法

Ajax 动态载入html页面后不能执行其中的js快速解决方法:事件背景 有一个公用页面需要在多个页面调用,其中涉及到部分js已经写在了公用页面中,通过ajax加载该页面后无法执行其中的js。 解决思路 1. 采用附加一个iframe的方法去执行js,为我等代码洁癖者所不齿。 2. 使用document.write输出代码,我等简洁主义
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top