JavaScript-从文件夹扫描和创建链接文件

JavaScript-从文件夹扫描和创建链接文件,javascript,jquery,html,Javascript,Jquery,Html,我已经创建了一堆本地HTML文件,我正试图通过xml文件和大量JavaScript/JQuery来翻译它们。翻译部分已经完成,我现在尝试使用所有xml文件创建一个下拉菜单来选择所需的语言 首先,我试图扫描一个名为“images”的本地文件夹,并在一个空白的html页面中打印文件名,但我无法做到这一点。我对堆栈溢出等问题做了很多研究,但即使我尝试了很多方法,也没有任何效果 以下是我目前的想法: HTML端: <body> <div id="fileNames">

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

首先,我试图扫描一个名为“images”的本地文件夹,并在一个空白的html页面中打印文件名,但我无法做到这一点。我对堆栈溢出等问题做了很多研究,但即使我尝试了很多方法,也没有任何效果

以下是我目前的想法:

HTML端:

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

window.onload=ChangeLangue
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 + "'>");
            }
        });
    }
});
var folder=“images/”;
$.ajax({
url:文件夹,
成功:功能(数据){
$(数据).find(“a”).attr(“href”),function(i,val){
if(val.match(/\(jpe?g | png | gif)$/){
$(“正文”)。追加(“”);
}
});
}
});

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

浏览器不允许跨源请求。将抛出一个错误作为
跨源请求仅支持协议方案:http、data、chrome、chrome扩展名、https。
因为协议是
文件://

您可以通过设置一个标志来完成此操作:

  • 退出Chrome

  • 使用以下命令重新启动

  • MAC:在终端中,
    open/Applications/Google\Chrome.app--args--允许从文件访问文件

    WINDOWS:在运行时,
    C:/PATH\u TO\u CHROME\u INSTALLATION\u文件夹/CHROME.exe--允许从文件访问文件

    现在,您可以从计算机访问这些文件。要验证它,您可以转到
    chrome://version
    并且您可以在
    命令行
    部分下看到启用的
    标志

    由于您有
    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>
    
    
    var url=“/Users/Default/Downloads”;
    var req=新的XMLHttpRequest();
    请求打开(“获取”,url,true);
    req.onreadystatechange=函数(){
    如果(req.readyState==4)
    {
    文件写入(请求响应文本);
    }
    };
    请求发送();
    

    附言:不知道它是否在Windows机器上工作。如果我错了,请纠正我。TIA。

    当你说“本地”时,你是指在客户端计算机上吗?如果是这样,那是不可能的。浏览器安全性阻止访问本地文件系统——这是有很好的理由的。我的意思是在我自己的计算机上,而不是在网络上。仍然是一样的。浏览器不允许JS访问本地文件系统。如果是这样,我就可以访问您计算机上的所有文件;)该死:(感谢您的快速回答!您可以使用file类型的输入,但这需要用户交互,单击实例您解释的问题正是发生的原因。我尝试了您的解决方案,但该命令在windows上似乎不起作用。感谢您的帮助,我将找到其他方法来完成此操作!退出所有chrome实例,转到运行并执行。)te命令-chrome.exe——允许从文件访问文件。我认为这是可行的。没有经过测试只是谷歌搜索。是的,我尝试了,但我得到了相同的错误(“跨源请求仅支持协议方案:http、数据、chrome、chrome扩展名、https。”)。使用firefox for windows似乎不会出现此错误,因为我在firefox上使用的所有HTML页面都很好,但在Chrome上则不行(我从一开始就在使用firefox)。您的JS是一个很好的开始,我将继续使用。感谢您的帮助