2

我是网络开发的初学者,我正在努力实现这一目标:

我有一个脚本,我希望它从我的主机在线加载。但是,如果没有互联网连接(脚本无法加载,即使以另一种方式),则回退以加载本地脚本。这可能吗?

我不介意解决方案,如果它是 jquery 或其他任何东西,我只想让它工作。

谢谢。

4

3 回答 3

3
<script>
var jsLoaded = false;
setTimeout("callback()", 2000);
function callback(){
  if (!jsLoaded) {
    //Do ur stuff means call your local javascript....
  } 
}
</script>

<script type="text/javascript" src="//assets.zendesk.com/external/zenbox/v2.5/zenbox.js" id="popup" onload="jsLoaded=true"></script>

说明:
我们有一个在两秒后调用的回调,并检查由您的脚本引用的 onload-event 设置的变量。您可以在加载本地脚本的回调中执行代码。

于 2013-03-29T09:30:03.633 回答
0

这假设您可以在本地访问 jQuery。

好吧,我建议你“尝试”通过 jQuery/Ajax 从远程主机加载脚本,我认为他们有一些工具可以帮助你做到这一点。然后检查响应代码...我认为 200 是“OK”,如果不是“OK”,则继续加载本地版本。

<script>
$('body').getScript('<yourremotehostaddress>').fail(function(jqxhr, settings, exception) {

       // Load your local script here.

});
</script>

希望这可以帮助 :)

上述评论的解决方案也是:您可以尝试从远程主机加载脚本,然后尝试访问脚本中包含的对象。假设有一个。

更新:对不起最初的帖子,我没有意识到传递给 getScript() 的处理程序只有在请求成功时才会被调用。我们要检查失败。

于 2013-03-26T22:17:22.077 回答
0

大概是这样的……?

<script type="text/javascript" src="//cod.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
    if(!window.jQuery) {
        document.write("<script type=\"text/javascript\" src=\"path/to/local/jquery.js\"><\/script>");
    }
</script>
于 2013-03-26T22:18:55.087 回答