如何设置加载已关闭的外部javascript文件的超时

如何设置加载已关闭的外部javascript文件的超时,javascript,ajax,timeout,Javascript,Ajax,Timeout,我使用javascript在另一台服务器上包含从php文件提供的一些内容。然而,这另一项服务有时会变得不稳定,要么需要很长时间才能加载,要么根本不加载 在JS中有没有一种方法可以在失败并停止包含JS之前,尝试获取x秒的外部数据。如果你是说 <script src="javascript.php"></script> 那么简单的答案是否定的,这就是为什么JSONP在这些情况下没有用处 较长的答案是,您可以使用setTimeout测试javascript中应该包含的变量

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

在JS中有没有一种方法可以在失败并停止包含JS之前,尝试获取x秒的外部数据。

如果你是说

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

那么简单的答案是否定的,这就是为什么JSONP在这些情况下没有用处

较长的答案是,您可以使用setTimeout测试javascript中应该包含的变量,如果var/函数不存在,则会给出一个错误

如果你这样做

<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>

var start=新日期();
var-tId;
函数testFunction(){
var end=新日期();
如果((end.getTime()-start.getTime())>10000){
警惕(‘放弃’)
}
如果外部JS中的(someFunction){//someFunction
someFunction()
}
else tId=setTimeout(testFunction,1000)
}

var jsload=false;
setTimeout(“callback()”,2000);
函数回调(){
如果(!jsLoaded){
警报(“2秒后未加载Javascript!”);
}否则{
警报(“已加载”);
}
}
现在,祝你好运,找到停止加载脚本的方法。。我已尝试从DOM中删除
元素,但仍在尝试加载


如果您的.js托管在同一个域上,我建议您使用AJAX方法加载javascript(请参阅)

可能重复的javascript(可能不是)。我认为这是一个JSONP类型的问题,您希望请求等待N秒,还是对资源进行N次尝试?
setTimeout(“callback()”,2000)????我想你的意思是
setTimeout(callback,2000)。。除此之外,它应该可以工作(我做了一个非常不同的版本,它使用相同的原理工作)。这两个版本都可以工作,正如您在这里看到的最佳答案:无论如何,我分享的是一个想法,而不是一个现成的代码。请随意更改:)干得好!公平。顺便说一句,我给你打了分,因为我同意这个想法是正确的。我不知道最初是谁给你打分(没有评论),但至少你现在回到了零。
<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>