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

问题描述 投票:0回答:2

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

JS 有没有办法在失败并停止包含 js 之前尝试获取外部数据 x 秒。

javascript ajax timeout
2个回答
6
投票

如果你的意思是

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

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>

现在,祝你好运找到如何停止加载脚本。我尝试从 DOM 中删除

<script>
元素,但它仍然尝试加载...

如果您的 .js 托管在同一域中,我建议您使用 AJAX 方法来加载 javascript(请参阅将外部文件加载到 div

© www.soinside.com 2019 - 2024. All rights reserved.