广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >Ajax动态载入html页面后不能执行其中的js怎么办
  • 677
分享到

Ajax动态载入html页面后不能执行其中的js怎么办

2024-04-02 19:04:59 677人浏览 八月长安
摘要

这篇文章主要介绍ajax动态载入html页面后不能执行其中的js怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!事件背景有一个公用页面需要在多个页面调用,其中涉及到部分js已经写

这篇文章主要介绍ajax动态载入html页面后不能执行其中的js怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

事件背景

有一个公用页面需要在多个页面调用,其中涉及到部分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怎么办”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网VUE频道!

--结束END--

本文标题: Ajax动态载入html页面后不能执行其中的js怎么办

本文链接: https://www.lsjlt.com/news/67926.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Ajax动态载入html页面后不能执行其中的js怎么办
    这篇文章主要介绍Ajax动态载入html页面后不能执行其中的js怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!事件背景有一个公用页面需要在多个页面调用,其中涉及到部分js已经写...
    99+
    2022-10-19
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作