jQuery CDN 未在 LocalHost 上加载
Posted
技术标签:
【中文标题】jQuery CDN 未在 LocalHost 上加载【英文标题】:jQuery CDN is not loading on LocalHost 【发布时间】:2013-03-25 13:48:36 【问题描述】:我有一个 jquery cdn 从以下加载:
<head>
.
.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
然后在正文中我有我的脚本来源
<body>
.
.<script src="app.js"></script>
</body>
这都是在本地,但是当我在浏览器中查看时,我在控制台中不断收到以下错误:
GET file://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
Uncaught ReferenceError: $ is not defined
我假设这是在说 jQuery 函数“$...”未定义,因为 CDN 的 GET 中存在错误,为什么会在本地发生这种情况?
【问题讨论】:
尝试通过调试查看正在发生的事情。例如,如果您使用 Chrome 打开检查器,转到“网络”选项卡,然后刷新页面。您将能够查看您的请求是否失败等。 @NickMitchinson 它说 status:(failed) & Type:PENDING 【参考方案1】:您实际上不是在 localhost (http://localhost
) 上运行,而是在本地文件系统 (file:///path/to/whatever.html
) 上运行。该协议通过//
链接复制到file://ajax.googleapis.com
,这当然不存在。
您应该在您的计算机上设置一个服务器,以便您有一个使用 http 协议访问的 实际 localhost。它还有其他好处,因为当直接从文件系统加载页面时,浏览器在其他方面的行为也会有所不同。
【讨论】:
确实,如果 CDN 调用失败,您应该尝试回退到您自己的网络服务器上的文件。这也适用于file://
,因为你只是回退【参考方案2】:
您是否尝试过删除“src”属性开头的“//”而改用“http://”?由于这些斜杠,它可能会将“localhost”附加到 URL 的开头。
【讨论】:
它可以解决问题,但您将失去使用//
url 的好处(根据当前 url 使用的自动使用 http 或 https)。【参考方案3】:
我在How to use Bootstrap CDN? 中回答了一个类似的问题,正如 Juhana 所说,问题是加载 jQuery 时缺少协议。
当您使用 http 或 https 时,无协议 CDN 可以工作,因为浏览器会将前缀添加到 jQuery URL。
但是当使用本地 html 文件时,缺少的协议将是 file:
并且浏览器将无法在 file://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
无法加载它的情况下找到 jQuery。在这种情况下,您必须手动添加协议,如果您最终在线使用该页面,这将是一个遗憾,因为无协议的 URL 更好,并且对缓存更友好(http://encosia.com/cripple-the-google-cdns-caching-with-a-single-character/)。
【讨论】:
以上是关于jQuery CDN 未在 LocalHost 上加载的主要内容,如果未能解决你的问题,请参考以下文章
使用 xampp 未在 localhost 上加载 css 文件
cookie 未在 chrome 或 firefox 中的 localhost 上设置
Pusher 未在 Heroku Rails 应用程序上触发,但在 localhost:3000 上工作正常
未捕获的 ReferenceError:$ 未在 Laravel 中的 http://localhost/project/public/user/1/edit:308:9 处定义 [重复]