当前位置:  开发笔记 > 编程语言 > 正文

动态添加的javascript与外部脚本不会被执行

如何解决《动态添加的javascript与外部脚本不会被执行》经验,为你挑选了1个好方法。

所以这就是我们的场景......我们首先要做的是,我们附加一段javascript代码,将外部脚本添加到文档中,如下所示:

(function() {
     var e = document.createElement('script'); e.type = 'text/javascript'; e.async = true; e.src = 'http://blabla.com/script.js';
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(e, s);
})();

然后script.js发生以下情况:

function ajaxCall() { 
    //... some script to send ajax request which calls createDiv() after success
   if (window.XMLHttpRequest){
      xmlhttp=new XMLHttpRequest();
   }
   else{
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
   xmlhttp.onreadystatechange=function(){
      if(xmlhttp.readyState==4&&xmlhttp.status==200){
         createDiv(xmlhttp.responseText);
      }
   };
   xmlhttp.open("GET","http://blabla.com/api/");
   xmlhttp.send(); 
}
function parseResponse(response) {
    var parser = new DOMParser();
    var dom = parser.parseFromString(response, "text/html");
    return dom;
}
function createDiv(responsetext)
{
   var dom = parseResponse(responsetext);

   var _ws = dom.getElementById('styles');
   var h = document.getElementsByTagName('head')[0];
   h.appendChild(document.importNode(_ws, true));

   var _jr = dom.getElementById('script1').outerHTML;
   var _vc = dom.getElementById('script2').outerHTML;
   var _rv = dom.getElementById('script3').outerHTML;

   var _rw = dom.getElementById('my_div');
   var _b = document.getElementsByTagName('body')[0];
   var _d = document.createElement('div'); _d.id = 'just_id';
   _d.innerHTML = _jr + _vc + _rv;
   _d.appendChild(document.importNode(_rw, true));
   _b.appendChild(_d);
}
ajaxCall();

一切正常,脚本和div按预期和预期的方式被追加,但附加的脚本不会被执行,也不会影响附加的div.这是为什么?我怎样才能让它执行?我们也没有在控制台中收到任何警告/错误.使用最新的Firefox.

编辑1

注释:您展示的示例脚本只定义了函数,但它实际上从未调用它们

它实际上调用了一个发出ajax请求的函数,请检查编辑过的代码片段.

编辑2

评论:您是否尝试将逻辑放入回调中,然后在createDiv中调用它?可能会添加一些日志来测试它是否被调用但无法找到div

我只是尝试console.log('hello world');调用其中一个脚本,这些脚本被createDiv()函数追加,但它什么也没做.

编辑3

更多细节.当页面加载时,我可以看到






















    
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有