如何为加载已关闭的外部 javascript 文件设置超时
Posted
技术标签:
【中文标题】如何为加载已关闭的外部 javascript 文件设置超时【英文标题】:How to set a timeout for loading a external javascript file which is down 【发布时间】:2011-07-27 06:12:55 【问题描述】:我正在使用 javascript 来包含从另一台服务器上的 php 文件提供的一些内容。然而,这个其他服务有时会变得不稳定,要么需要很长时间才能加载,要么根本不会加载。
在 JS 中是否有办法在失败并停止包含 js 之前尝试在 x 秒内获取外部数据。
【问题讨论】:
***.com/questions/1018705/…的可能重复 可能不会。我认为这是一个 JSONP 类型的问题 您希望请求等待 N 秒,还是对资源进行 N 次尝试? 【参考方案1】:如果你的意思是
<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】:<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(见http://codesnippets.joyent.com/posts/show/602)
【讨论】:
setTimeout("callback()", 2000);
????我认为您的意思是 setTimeout(callback, 2000);
.. 除了它应该可以工作(我做了一个非常不同的版本,它使用相同的原理工作)。
两者都有效,您可以在此处阅读最佳答案:***.com/questions/6081560/… 无论如何,我分享的想法不仅仅是一个现成的代码。随意更改它:) 干得好!
公平。顺便说一句,我给你做了标记,因为我同意这个想法是合理的。我不知道谁最初将你标记为降级(没有评论),但至少你现在回到了零。以上是关于如何为加载已关闭的外部 javascript 文件设置超时的主要内容,如果未能解决你的问题,请参考以下文章
将社交媒体的外部 Javascript 加载到网页中的目的 [关闭]
如何为外部 url 正确设置 Next image loader url
如何为 YouTube 视频添加启动画面/占位符图像 [关闭]