Как установить тайм-аут для загрузки внешнего файла JavaScript, который не работает - PullRequest
10 голосов
/ 01 апреля 2011

Я использую javascript для включения некоторого контента, поданного из файла php на другой сервер.Однако этот другой сервис может иногда работать некорректно и либо загружаться долго, либо не загружаться вообще.

Есть ли способ в JS попытаться получить внешние данные за x секунд до сбояи остановка, чтобы включить JS.

Ответы [ 2 ]

5 голосов
/ 01 апреля 2011

Если вы имеете в виду

<script src="javascript.php"></script>

тогда короткий ответ - нет, поэтому JSONP в этих случаях бесполезен.

Более длинный ответ заключается в том, что вы можете использовать setTimeout и проверить переменную, которую, как вы знаете, должны быть в javascript, и выдать ошибку, если var / function отсутствует.

Если вы делаете

<script>
var start = new Date();
var tId;
function testFunction() {
  var end = new Date();
  if ( (end.getTime()-start.getTime()) > 10000) {
    alert('gave up')
  }
  else if (someFunction) { // someFuntion in the external JS
    someFunction()
  }
  else tId=setTimeout(testFunction,1000)
}
</script>

<script src="javascript.php"></script>
2 голосов
/ 31 августа 2011
<script type="text/javascript">
var jsLoaded = false;
setTimeout("callback()", 2000);
function callback() {
    if (!jsLoaded) {
        alert("Javascript not loaded after 2 seconds!");
    } else {
        alert('Loaded');
    }
}
</script>
<script type="text/javascript" id="foo" src="url.js" onload="jsLoaded=true"></script>

Теперь удачи, чтобы найти, что нужно сделать, чтобы прекратить загрузку скрипта ... Я пытался удалить элемент <script> из DOM, но он все еще пытается загрузить ...

Если ваш .js размещен в том же домене, я предлагаю вам использовать метод AJAX для загрузки JavaScript (см. http://codesnippets.joyent.com/posts/show/602)

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