为什么相关协议在本地文件中不起作用?

时间:2015-08-25 13:49:58

标签: jquery local getfiles

我在桌面上有一个index.html文件,我想用这些选项获取jQuery库:

  • 我不想将index.html文件上传到服务器
  • 我不想为get jquery脚本添加协议。
  • 必须从jQuery CDN(或Google)服务器检索脚本,而不是从本地文件检索脚本 我试过这种方式: <script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js></script>

但看起来它并不适用于本地文件 出了什么问题?

1 个答案:

答案 0 :(得分:2)

它无法正常工作的原因是因为使用//启动URL将使用“当前”协议。在Internet上,您可以使用HTTPHTTPS协议访问资源。但是,当显示本地硬盘驱动器中的文件时,使用的协议为FILE,因此不是转换为所需的http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js转换为file://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js

所以你的选择是使用如下的javascript加载脚本,或者是硬编码协议。

<script>
    var p = 'http';
    if (document.location.protocol == "https:"){
        p+='s';
    }
    var z = document.createElement("script"); 
    z.type = "text/javascript"; 
    z.src = p + "://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"; 
    var s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(z, s);
</script>

这将查看当前协议,因此它使用正确的协议。

PS:我使用了SO来源的adzerk代码并对其进行了修改......我知道Google分析使用了相同类型的代码段。