Javascript: "Cancelling"动态脚本标签?

标签 javascript ajax dynamic scripting

我使用动态脚本标签从外部域请求 javascript。有时请求花费的时间太长;如果请求花费的时间太长,是否可以停止请求或超时?

我不想使用 xmlhttprequest,因为我想避免必须使用服务器端代理。

谢谢!

最佳答案

话虽如此,动态添加脚本有多种方法,一种方法是附加 <script>。当 DOM 准备好时节点到文档的主体,然后如果加载时间过长则将其删除..

   <html>
    <head>
    <title>bla</title>
    <script type="text/javascript">
      function init(){
         var max_time = 2000 //in milliseconds
         g_script_url = "http://yoursite.net/script.js";
         var script = document.createElement("script"); 
         script.setAttribute("src",script_url);
         script.setAttribute("type","text/javascript");   
         document.body.appendChild(script);   

         g_timeout=setTimeout(function(){ 
           var scripts = document.getElementsByTagName("script");
           for (var i=0; i < scripts.length; i++ ){
           if (scripts[i].src == script_url){
              document.body.removeChild(scripts[i]);
            }
           }   
          },max_time);
        }

     window.addEventListener("DOMContentLoaded", init, false);
    </script>
  </head>
   <body>bla bla [...]</body>
  </html>

然后可以在动态加载的脚本末尾添加一条清除超时的指令:

/* end of http://yoursite.net/script.js's code */
clearTimout(g_timeout);

注意:

document.addEventListener 在 IE 中不起作用,如果你想要跨平台解决方案,请使用 Jquery 的方法 $(document).ready或者看看 Document ready equivalent without JQuery

关于Javascript: "Cancelling"动态脚本标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1247611/

相关文章:

javascript - 点击时获取href值

javascript - ajax html响应自定义显示

javascript - 将多条 JSON 记录读取到数组中

javascript - Ajax .done() 不适合我

javascript - 带有模板和 Controller 的 Angular 动态元素

javascript - 更改按钮值 Onclick

javascript - 简单数据的最佳服务端数据存储方式

javascript - 如何使用正则表达式和javascript将以下命令拆分为标记:

ios - Swift 3 - 动态与@objc

c++ - 如何使用模板而不是宏来创建具有动态数量函数的类