jquery - 为什么相关协议(protocol)在本地文件中不起作用?

标签 jquery local getfiles

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

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

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

最佳答案

它无法正常工作的原因是因为以 // 开头的 URL 将使用“当前”协议(protocol)。在互联网上,您可以使用 HTTPHTTPS 协议(protocol)访问资源。但是,当显示本地硬盘驱动器中的文件时,使用的协议(protocol)是 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 加载脚本,或者对协议(protocol)进行硬编码。

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

这将查看当前协议(protocol),以便使用正确的协议(protocol)。

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

关于jquery - 为什么相关协议(protocol)在本地文件中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32205838/

相关文章:

javascript - ScrollingTop 卡住了

jquery - Fuelux Datagrid 破坏了 Bootstrap 下拉菜单

css - 未加载本地背景图像

variables - 如何修改java字节码中局部变量的类型

javascript - 如何在 JQGrid 中按行排序?

javascript - 使用 jquery 隐藏具有匹配 ID 和类的 div

c# - 如何使 GetFiles() 排除扩展名以搜索扩展名开头的文件?

f# - 在F#: How do I obtain a list of the filenames in a directory; expected unit have string中

android - 如何将Activity绑定(bind)到Service,并从Activity中控制和管理Service

Python Paramiko SFTP 获取文件以及文件时间戳/统计信息