我已经创建了一堆本地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 + "'>");
}
});
}
});
我做错了什么?这可能吗?
答案 0 :(得分:1)
浏览器不允许跨源请求。将抛出错误
Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
因为协议是file://
您可以通过设置标记来执行此操作:
退出Chrome。
使用以下命令重新启动。
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。