如何设置加载外部javascript文件的超时时间

Vis*_*ish 10 javascript ajax timeout

我使用javascript包含从另一台服务器上的php文件提供的一些内容.但是,这种其他服务有时会变得不稳定,要么需要很长时间才能加载,要么根本不加载.

在失败和停止包含js之前,JS是否有办法尝试获取外部数据x秒.

mpl*_*jan 5

如果你的意思是

<script src="javascript.php"></script>
Run Code Online (Sandbox Code Playgroud)

那么简短的答案就是这就是为什么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>
Run Code Online (Sandbox Code Playgroud)


小智 5

<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>
Run Code Online (Sandbox Code Playgroud)

现在,祝你好运,找到如何停止加载脚本。我尝试<script>从 DOM 中删除该元素,但它仍然尝试加载...

如果您的 .js 托管在同一域上,我建议您使用 AJAX 方法来加载 javascript (请参阅http://codesnippets.joyent.com/posts/show/602