我如何 link 在外部和内部编写脚本?

How do I link scripts externally and internally?

我有一个网站,我想在线和离线工作。我想减少加载时间,所以我缩小了加载缓慢的脚本。它没有足够的工作。在本地,一些脚本需要 4-6 秒才能加载。

我知道 linking 脚本在外部大大加快了速度。我已经尝试过了并且有效。但有些用户将无法访问互联网。有没有办法 link 一组脚本到外部站点,如果它们没有互联网访问权限,则在本地?

 <script src="js/jquery-1.9.1.min.js" type="text/javascript"></script>
 <script src="js/jquery.dataTables.min.js" type="text/javascript"></script>
 <script src="ui/jquery-ui.min.js" type="text/javascript"></script>

您可以执行类似于 this answer. 的操作 基本上,您的想法是尝试为 jQuery 加载基于 Internet 的脚本。之后,您执行一个普通脚本,检查是否 jQuery === undefined。如果是,您要加载本地副本。

基本上,你想做的事的一个例子:

<script src="[jQueryURL]" type="text/javascript"></script>
<script src="[dataTablesURL]" type="text/javascript"></script>
<script src="[jQueryUIURL]" type="text/javascript"></script>
<script type="text/javascript">
    if(jQuery === undefined) {
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.src = "js/jquery-1.9.1.min.js";
        document.getElementsByTagName('head')[0].appendChild(script);
        //repeat for other two scripts here
    }
</script>

将会发生的是它会尝试加载有问题的脚本,然后它会检查是否定义了 jQuery。如果不是,则意味着脚本未加载,因此您想加载本地版本并将它们附加到您的 header.

确保脚本声明了一个您可以测试的全局变量。如果外部脚本加载失败(您可以通过测试该变量来确定),则生成一个本地脚本加载元素。

<script src="http://example.com/example.js"></script>
<script>
    if !(window.Example) {
        document.write('<script src="../scripts/example.js"><\/script>');
    }
</script>

<script type="text/javascript">
 if(navigator.onLine) 
 { 
  alert("Connected");
 }
 else
 {
  alert("Not Connected");
 }
</script>

首先检查是否存在互联网连接然后加载外部文件否则加载内部文件