Javascript 脚本在Github页面上托管时停止工作

Javascript 脚本在Github页面上托管时停止工作,javascript,jquery,html,Javascript,Jquery,Html,我构建了一个随机句子生成器——当你点击一个HTML按钮时,它下面会生成一个随机句子。生成由一个简单的脚本和jQuery支持 它在本地机器上运行良好:当我在浏览器中打开index.html时,一切都很顺利 但一旦我上传到GiHub并访问GitHub页面URL,生成器就会停止工作。单击按钮不起任何作用 以下是脚本(全部包含在index.html文件中): 及 函数语句加载(){ //声明数组 变量名词=['Mulder,Scully,and']; var名称=[“助理局长斯金纳”、“吸烟的人”、

我构建了一个随机句子生成器——当你点击一个HTML按钮时,它下面会生成一个随机句子。生成由一个简单的脚本和jQuery支持

它在本地机器上运行良好:当我在浏览器中打开index.html时,一切都很顺利

但一旦我上传到GiHub并访问GitHub页面URL,生成器就会停止工作。单击按钮不起任何作用

以下是脚本(全部包含在index.html文件中):


函数语句加载(){
//声明数组
变量名词=['Mulder,Scully,and'];
var名称=[“助理局长斯金纳”、“吸烟的人”、“亚历克斯·克雷塞克”];
var actions=[“正在从外星赏金猎人那里逃跑”,“正在跟踪变形者”,“正在追捕变异连环杀手”];
var places=[“在新泽西州的树林里”,“在政府掩体里”,“在奥林匹克国家森林里];
//洗牌每个数组的内容,每个数组挑选一个条目
var randNoun=名词[Math.floor(Math.random()*nomes.length)];
var randName=names[Math.floor(Math.random()*names.length)];
var randAction=actions[Math.floor(Math.random()*actions.length)];
var randPlace=places[Math.floor(Math.random()*places.length)];
//将随机条目放在HTML中的适当位置
jQuery(“h5”).html(“”);
jQuery(“h5”).append(randNoun+);
jQuery(“h5”).append(randName+);
jQuery(“h5”).append(randAction+);
jQuery(“h5”)。附加(randPlace);
}

是什么原因导致它在本地工作,但在Github页面上不工作?

如果打开“开发人员工具”窗格(在Chrome中,右键单击页面并选择“检查”),您将在网络控制台中看到此错误:

混合内容:通过HTTPS加载了“”处的页面,但请求了不安全的脚本“”。此请求已被阻止;内容必须通过HTTPS提供

您需要通过HTTPS而不是HTTP加载脚本

这在本地工作的原因是,您正在本地计算机上使用
文件://
方案(或者
http://
如果您有本地开发服务器)。在这种情况下,浏览器通过HTTP加载外部脚本没有问题

但是,Github Pages通过HTTPS(安全连接)为您托管文件。出于安全原因,如果页面托管在HTTPS上,浏览器将不会通过HTTP加载脚本

只需更改
标记中的代码即可通过HTTPS加载脚本:

<script src="https://code.jquery.com/jquery-1.10.1.min.js"></script>

如果打开“开发人员工具”窗格(在Chrome中,右键单击页面并选择“检查”),您将在网络控制台中看到此错误:

混合内容:通过HTTPS加载了“”处的页面,但请求了不安全的脚本“”。此请求已被阻止;内容必须通过HTTPS提供

您需要通过HTTPS而不是HTTP加载脚本

这在本地工作的原因是,您正在本地计算机上使用
文件://
方案(或者
http://
如果您有本地开发服务器)。在这种情况下,浏览器通过HTTP加载外部脚本没有问题

但是,Github Pages通过HTTPS(安全连接)为您托管文件。出于安全原因,如果页面托管在HTTPS上,浏览器将不会通过HTTP加载脚本

只需更改
标记中的代码即可通过HTTPS加载脚本:

<script src="https://code.jquery.com/jquery-1.10.1.min.js"></script>

今天我看到了一个类似的问题,但不是因为HTTP/HTTPS:当我发布到GitHub页面时,源HTML中的所有CR/LF字符都被删除了。对于带有结束标记的HTML来说,这可能不是什么大问题,但是当整个源页面(包括JavaScript)都在一行时,JavaScript中的任何嵌入注释都会导致所有代码(直到JavaScript结束标记)意外地被注释掉

在这种情况下,
更多的代码
被视为注释:

    code...
    // a comment
    some more code...
这里有一个例子。之前,在编辑器中查看:

推送到GitHub后,CR/LF明显被GH Pages操作移除:

请注意注释后所有剩余的JavaScript是如何被禁用的:

(有些不希望的)解决方案是删除注释或更好:使用
/*
*/
注释包装,而不是在行的开头使用
/

  • 编辑:根本原因似乎是
    布局:压缩
    ;看

今天我看到了一个类似的问题,但不是因为HTTP/HTTPS:当我发布到GitHub页面时,源HTML中的所有CR/LF字符都被删除了。对于带有结束标记的HTML来说,这可能不是什么大问题,但是当整个源页面(包括JavaScript)都在一行时,JavaScript中的任何嵌入注释都会导致所有代码(直到JavaScript结束标记)意外地被注释掉

在这种情况下,
更多的代码
被视为注释:

    code...
    // a comment
    some more code...
这里有一个例子。之前,在编辑器中查看:

推送到GitHub后,CR/LF明显被GH Pages操作移除:

请注意注释后所有剩余的JavaScript是如何被禁用的:

(有些不希望的)解决方案是删除注释或更好:使用
/*
*/
注释包装,而不是在行的开头使用
/

  • 编辑:根本原因似乎是
    布局:压缩
    ;看

检查控制台是否有错误扫描您发布的GitHub页面url?可能重复的检查控制台是否有错误扫描您发布的GitHub页面url?可能重复的@LankArnold乐意帮助!控制台是第一个检查此类内容的地方。顺便说一句,如果这是一个有帮助的答案,你除了接受外还可以投票或者使用与当前相同的加载方案