HTML文件和Javascript文件与AJAX不兼容

HTML文件和Javascript文件与AJAX不兼容,javascript,html,ajax,Javascript,Html,Ajax,七年来,我一直在为离线和私人使用的小型网站编程。每个项目都由一个html文件、一个链接到css文件的文件和一个javascript文件组成。后者使用AJAX从.txt文件加载内容,并在html站点上灵活显示。文件(.html、.css、.js、.txt)位于本地硬盘上的同一文件夹中,我在浏览器中本地打开该html文件。我已经成功地使用这个设置来编写自己的小百科全书、词汇训练器、游戏等 然而,它不再起作用了。AJAX不会加载文本文件内容。(我知道这一点,因为我直接在html文件中插入了Javasc

七年来,我一直在为离线和私人使用的小型网站编程。每个项目都由一个html文件、一个链接到css文件的文件和一个javascript文件组成。后者使用AJAX从.txt文件加载内容,并在html站点上灵活显示。文件(.html、.css、.js、.txt)位于本地硬盘上的同一文件夹中,我在浏览器中本地打开该html文件。我已经成功地使用这个设置来编写自己的小百科全书、词汇训练器、游戏等

然而,它不再起作用了。AJAX不会加载文本文件内容。(我知道这一点,因为我直接在html文件中插入了Javascript/AJAX代码,但它仍然不起作用。)此外,html不与.js文件连接。(我知道这一点,因为我直接将文本内容作为变量插入Javascript文件,但它仍然不起作用。)只有将这两个步骤结合起来(即在html文件中插入Javascript代码,并将文本内容作为变量插入),它才能起作用。然后,除了CSS之外,所有内容都在一个html文件中。然而,这是不可行的,因为文件变得非常混乱,编辑文本内容几乎是不可能的

大约半年前,当我更新Firefox时,这个问题就开始了。首先,我认为浏览器已经更改了一些安全设置,以便不允许html文件链接到javascript。但我没有找到相应的设置。然后,我尝试了其他浏览器。Chrome、Edge和旧IE的反应相同。我承认我没有尝试Opera、Safari和其他浏览器,但是,我尝试的浏览器已经代表了某种多样性。我尝试了不同的计算机,但我曾经成功的网站失败了。感觉好像这个环境从来没有起过作用,但多年来它一直完美地工作着。由于这类代码是在W3学校等热门课程中教授的,因此它应该是有效的。我没有改变任何代码。因此,我想知道是否出于安全原因在全球范围内删除了此功能。但如果是这样的话,万维网最简单的流程将不再有效。情况显然并非如此。使用AJAX链接到javascript代码的简单html文件是web编程最基本的功能之一,不是吗?因此,似乎有一个错误或原因,我无法找到

我一直在等待并尝试我能想到的所有解决方案,但似乎只有一种方法可以走出这条死胡同:问你,亲爱的程序员。我想你们中的许多人比我有更多的经验,因为我只知道网页设计的基本问题。如果你能让我知道,如果你能想到我的问题的任何原因和/或解决方案,我将不胜感激

为了便于理解,我在这里给出了在我所有项目中几乎相同的基本示例代码:

这是地址(请看最后两个字符):

这是Site.html文件:

<!DOCTYPE html>
<html>

<head>
<link href="Design.css" rel="stylesheet"/>
<script src="Programme.js"></script>
</head>

<body>
<div id="ShowResult"></div>
</body>

</html>
这是Contents.txt文件的示例:

Grass is green.
The sky is blue.
Clouds are white.
此外,还有一个Design.css文件,它仍然以通常的方式工作

现在,我希望屏幕显示“天空是蓝色的”。它工作得很好,但现在不行了。如果你知道一个解决方案,请帮助我

致以最良好的祝愿


Johannes

这看起来可能是以下引用的安全修复的结果:

关于这一主题的讨论在:

建议您现在需要通过以下设置明确启用本地文件的读取:


privacy.file\u unique\u origin preference

AJAX旨在通过HTTP而不是本地文件系统工作。我怀疑您将此文件作为本地文件打开是问题所在。你看过浏览器的开发控制台上的错误了吗?你可能想总结一下你的问题,只留下与获得帮助实际相关的信息(即:实际代码+出了什么问题)。检查Firefox的开发控制台,你会说?请输入您在问题中看到的任何错误。@David:代码在本地运行了很多年。这似乎在一夜之间遇到了一些问题。@melancia:总结是:如何让上述代码在本地工作?不行,亲爱的艾伦·海伊,谢谢你!这就是解决办法。通过输入现有属性的名称,然后启用或禁用它,我发现有一个用于高级设置的控制台。几个月前,我甚至试图弄清楚我的担忧是否存在背景,但我没有找到。现在您提供了正确的解决方案。
var List;                                           // this variable is defined globally here
var GetContent = new XMLHttpRequest();              // start of AJAX, receivinig contents of the txt file
GetContent.open('GET','Contents.txt',true);
GetContent.send();
GetContent.onreadystatechange = function () {
    if (GetContent.readyState == 4) {
        List = GetContent.responseText.split("\n");
    }
}                                                   // end of AJAX

document.getElementById('ShowResult').innerHTML = List[1];
Grass is green.
The sky is blue.
Clouds are white.