Javascript: «Отмена» динамического тега сценария? - PullRequest
4 голосов
/ 08 августа 2009

Я использую динамические теги сценариев для запроса javascript из внешних доменов. Иногда запрос занимает слишком много времени; Можно ли остановить запрос или тайм-аут, если запросы занимает слишком много времени?

Я не хочу использовать xmlhttprequest, потому что я бы хотел избежать использования прокси на стороне сервера.

Спасибо!

1 Ответ

0 голосов
/ 08 августа 2009

Сказав, что существуют разные способы динамического добавления скрипта, можно сделать это путем добавления узла <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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...