JavaScript - 从文件夹

时间:2018-01-03 15:49:08

标签: javascript jquery html

我已经创建了一堆本地HTML文件,并且我正在尝试通过xml文件和大量JavaScript / JQuery来翻译它们。翻译部分已完成,我现在正在尝试使用所有xml文件进行下拉菜单,以选择所需的语言。

首先,我尝试扫描名为“images”的本地文件夹,并在空白的html页面中打印我的文件名,但我无法执行此操作。我对堆栈溢出和forum.jquery.com进行了大量研究,但即使我尝试了很多东西,也没有任何效果。

以下是我暂时提出的内容:

HTML方面:

<body>
    <div id="fileNames">
        <p></p>
    </div>
    <script>window.onload=ChangeLangue</script>
</body>

JS / Jquery方:

var folder = "images/";
$.ajax({
    url: folder,
    success: function (data) {
        $(data).find("a").attr("href", function (i, val) {
            if (val.match(/\.(jpe?g|png|gif)$/)) {
                $("body").append("<img src='" + folder + val + "'>");
            }
        });
    }
});

我做错了什么?这可能吗?

1 个答案:

答案 0 :(得分:1)

浏览器不允许跨源请求。将抛出错误 Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.因为协议是file://

您可以通过设置标记来执行此操作:

  1. 退出Chrome。

  2. 使用以下命令重新启动。

  3. MAC :在终端open /Applications/Google\ Chrome.app --args --allow-file-access-from-files

    WINDOWS :在运行中,C:/PATH_TO_CHROME_INSTALLATION_FOLDER/chrome.exe --allow-file-access-from-files

    现在您可以从计算机访问这些文件。要进行验证,您可以转到chrome://version,然后您可以在flag部分看到Command Line已启用。

    如果您有var folder="images/",并且假设浏览器中加载的页面位于/Users/Default/Desktop文件夹中,则发出的ajax请求将为

    file:///Users/Default/Desktop/images

    如果您在文件夹/之前添加var folder = "/images/", 请求将为file:///images/

    确保提供所需/完整的路径。

    收到回复后,由于回复是html格式,您可以使用document.write(response)。从那里,您可以查看和导航文件夹。

    我尝试使用以下JS代码并获得结果。

    <script type="application/javascript">
        var url = "/Users/Default/Downloads";
        var req = new XMLHttpRequest();
        req.open("GET",url,true);
        req.onreadystatechange=function(){
            if(req.readyState === 4)
            {
                document.write(req.responseText);
            }
        };
        req.send();
    </script>
    

    P.S。 :不知道它是否适用于Windows机器。如果我错了,请纠正我。 TIA。