从本地运行的JS访问文件

时间:2012-10-30 15:19:26

标签: javascript jquery ajax http google-chrome

我需要从JS加载一个简单的.CSV文件(这不是问题),但是“脚本”需要是可移植的(我将把它用作比赛的屏幕),并且将插入分数数据在CSV中,JS将根据CSV更新它的数据。

但我的问题是:我需要在没有apache或服务器的情况下运行它,因为我不能让那些将使用它的人,将拥有apache和Internet ...它需要从文件夹打开(只是带有JS的HTML,以及与.CSV相同的文件夹中的文件

当我尝试从jQuery($.get(..., ..., "jsonp")$.get())访问文件时,Chrome会输出以下错误:

XMLHttpRequest cannot load file:PATHTOTHEFILE Origin null is not allowed by Access-Control-Allow-Origin.

这是因为浏览器阻止了它的内容(出于安全原因)。

如何处理这个问题,或者你知道一个更好的解决方案,保存一些简单的数据并从JS读取它而不会出现水星问题吗?

由于

2 个答案:

答案 0 :(得分:1)

您需要将--allow-file-access-from-files添加到chrome启动命令行

制作一个BAT文件,让用户点击它来启动你的应用

%LOCALAPPDATA%\Google\Chrome\Application\chrome.exe ^
--allow-file-access-from-files ^
http://bing.co.uk

换出http://为你的文件网址。

答案 1 :(得分:0)

您可以使用html5 FileReader。但是这样你就必须选择文件。

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<label for="files">Path to file: </label><input type="file" id="files" name="files[]"/>
<script>
function handleFileSelect(evt) {
        var files = evt.target.files;
        var f;
        for (var i = 0; f = files[i]; i++) {
            if (!f.type.match('text.*')) {
                continue;
            }
            var reader = new FileReader('test.html');
            reader.onloadend = (function () {
                return function(e) {
                  alert(e.target.result);
                };
            })();
            reader.readAsText(f);
        }
    }



    var fileSerf= document.getElementById('files');
    if (fileSerf){
        fileSerf.addEventListener('change', handleFileSelect, false);
    }
</script>
</body>
</html>

示例:http://jsbin.com/ozeyag/293/