0

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

但我的问题是:我需要在没有 apache 或服务器的情况下运行它,因为我无法让使用它的人拥有 apache 和 Internet ......它需要从一个文件夹中打开(只是一个 HTML与 JS,以及与 .CSV 位于同一文件夹中的文件)

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

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

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

我该如何“处理”这个问题,或者您知道更好的解决方案,以保存一些简单的数据并从 JS 读取它而不会出现安全问题?

谢谢

4

2 回答 2

1

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

制作一个 BAT 文件并让您的用户单击该文件以启动您的应用程序

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

将 http:// 换成你的文件 url。

于 2012-10-30T15:23:22.737 回答
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/

于 2012-10-31T03:36:26.280 回答