Javascript在Github页面上无法运行

4

我的Github Pages网站上使用的JavaScript曾经可以正常工作,但在我删除了存储库并尝试上传带有一些更改的项目后,它不再起作用。这是存储库,这是网站


我还应该提到,Jekyll 在本地运行网站非常顺利。 - Austin Magnuson
我还应该提到,下面的建议在index.html中没有起作用。 - Austin Magnuson
我通过创建一个新的index.js文件成功地让一切都运行起来了。再次感谢所有给予反馈的人。 - Austin Magnuson
仓库和网站都是404错误。这个问题并不是很有帮助 :( - Matt Joiner
2个回答

21

你正在通过HTTPS提供网站,但尝试使用HTTP加载jQuery。这是不允许的。

<!-- wrong -->
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>

https代替http,你就可以顺利进行了。如果你在浏览器中打开JavaScript控制台(通常在F12下),这个错误很容易被发现。

<!-- correct -->
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>

但是什么是协议相对链接?

您也可以使用这种曾经流行的语法:

<!-- meh -->
<script src='//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>

但现在这已经是一种货物崇拜了。明确写出 https://cdnjs.cloudflare.com/ 更好。

原因如下:

来自Chrome开发人员之一Paul Irish的一些建议:

如果所需资源可在SSL上使用,则始终使用https://资源。

请求HTTPS资源总是安全的,即使您的站点使用HTTP,但反之则不然。


2
@Hitmands的答案更加协议无关,而且效果更好(可以同时服务于HTTPHTTPS)。 - StephenG
@StephenG 它的工作方式更好在哪里?请看我对那个答案的评论。我错过了什么吗? - Kos
1
它遵循用于服务站点的协议,因此如果使用HTTP来提供主页面,则将使用HTTP来提供JavaScript。同样适用于HTTPS。通过使其协议无关,该站点可以在不更改代码的情况下对不同协议进行响应。 - StephenG
1
@StephenG,为什么这对CDN代码有好处或帮助?如果您始终要求https,一切都能正常工作+您确信您真的从cdnjs.cloudflare.com下载了代码。承认吧,您只是觉得//看起来更整洁 :-) - Kos
编辑了我的回答并添加了一些参考。另请参阅https://dev59.com/zl4c5IYBdhLWcg3wAWBE - Kos
显示剩余2条评论

3

当你使用未指定的 http 协议 时,最好不要在任何请求中加入它们... 因此,不要使用 http://,而是只使用 //

console.log("$", window.jQuery)
<script src='//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>


3
我故意避免使用这种语法。如果CDN提供了https,即使您的网站在HTTP上,也应该使用它。还有一个小问题-协议不可知路径不能与file://一起使用。 - Kos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接