0

我以前问过这个问题,但解释得不够好,所以这里有一个更好的尝试:

我正在制作一个将在客户端而不是服务器端运行的应用程序。我在目录中有一个 .txt 文件,其中包含应用程序的所有代码,我希望能够自动将内容加载到变量中,而无需用户选择任何内容。因此,我不想使用input.html 页面,而只是在打开 .html 页面时让文件自行加载。作为最终结果,我想要一个String包含文件内文本的文件。

我没有使用任何框架,只是在 JavaScript、CSS 和 HTML 中严格编码。

我假设这个问题的答案涉及 aBlob和 using readAsText(),但是即使在阅读了完整的文档之后,我也不确定如何将 URL 传递给它,以便它可以读取 .txt 文件的内容。

4

1 回答 1

-1

最简单的方法是 XML 请求。这使您可以异步或同步访问文件的内容。请注意,CORS 有时会阻止它,因此如果您使用 chrome,则可能需要禁用它。

function getData(file) {
    var xmlhttp;

    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    }

    xmlhttp.open("GET", file, false);
    //The false above means synchronously, true means asynchronously
    xmlhttp.send();

    return xmlhttp.responseText;
}

let myVar = getData("text.txt");

编辑:函数开始时来自 Cors-anywhere 的这段代码可以修复 cors 策略 https://github.com/Rob--W/cors-anywhere/#documentation

(function() {
    var cors_api_host = 'cors-anywhere.herokuapp.com';
    var cors_api_url = 'https://' + cors_api_host + '/';
    var slice = [].slice;
    var origin = window.location.protocol + '//' + window.location.host;
    var open = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function() {
        var args = slice.call(arguments);
        var targetOrigin = /^https?:\/\/([^\/]+)/i.exec(args[1]);
        if (targetOrigin && targetOrigin[0].toLowerCase() !== origin &&
            targetOrigin[1] !== cors_api_host) {
            args[1] = cors_api_url + args[1];
        }
        return open.apply(this, args);
    };
})();
于 2019-08-06T14:52:42.753 回答