菜单

ajax 动态载入html后无能够实施中的js解决措施

2018年11月15日 - Ajax

综上所述上述多智,排除不利因素,总结发生一个于实用的方,可以满足类似这样公用页面的尽ajax加载的js的求,在ajax加载的公用函数里面长代码即可。主要代码如下:

缓解思路

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

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

3.
尽简便易行的点子是拿js放到需要调用的父页面,那想然的公用页面,每个地方调用都要描写副一不善,代码冗余。

  1. eval是个缓解措施,虽然不算。

5.
错综复杂的缓解办法:正则相当有加载页面中之富有js,为这些js创建同多只<script>标签,把js内容插入即可实行。但利用中发现,firefox可行,但IE还是无由。(师太,您便起了吧~)

以上所述是微编为大家介绍的Ajax
动态载入html页面后无可知执行中的js快速化解方式,希望对大家持有帮助,如果大家产生另疑窦请给自家留言,小编会及时回复大家的。在此为非常感谢大家对台本的小网站的支持!

解决方案

综合上述又方式,排除不利因素,总结发生一个比实用的点子,可以满足类似这样公用页面的实行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啦。

由来,算比较完善的解决。

转自:http://www.impng.com/web-dev/execscript-loaded-by-ajax.html

发出一个公用页面需要以差不多只页面调用,其中涉嫌到片js已经写于了公用页面中,通过ajax加载该页面后无法推行中的js。

事件背景

发生一个公用页面需要以差不多单页面调用,其中涉嫌到片js已经勾勒以了公用页面被,通过ajax加载该页面后无法执行中的js。

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

  1. eval是独缓解方法,虽然不算。

公或许感兴趣的文章:

化解方案

3.
不过简易的道是将js放到需要调用的父页面,那想然的公用页面,每个地方调用都使描写副一次,代码冗余。

事件背景

  1. 下附加一个iframe的方法去实施js,为自我等于代码洁癖者所未齿。

  2. 使用document.write输出代码,我当简洁主义者所未甘于。

// 第一步:匹配加载的页面中是否含有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]);
      }
    }
  }
}

总结

5.
复杂的化解智:正则相当有加载页面被的富有js,为这些js创建同多个<script>标签,把js内容插入即可实行。但采用被窥见,firefox可行,但IE还是未由。(师太,您就起了吧~)

缓解思路

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图