2012-10-30 136 views
0

我需要從JS加載一個簡單的.CSV文件(這裏不是問題),但「腳本」需要可移植(我將用它作爲競爭對手的屏幕),並將得分數據插入到CSV中,並且JS將根據CSV更新它的數據。從JS運行本地訪問文件

但我的問題在於:我需要運行它沒有apache或服務器,因爲我不能讓舒爾的人誰將使用它,將有apache和互聯網......它需要打開從一個文件夾(只是JS一個HTML,並在同一文件夾與該.csv文件)

當我試圖從jQuery的訪問文件($.get(..., ..., "jsonp")$.get()),鉻輸出這樣的錯誤:

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

發生這種情況是因爲瀏覽器阻止了它的內容(出於安全原因)。

我該如何「處理」這個問題,或者你知道一個更好的解決方案,保存一些簡單的數據並從JS讀取而沒有汞問題?

感謝

回答

1

你需要添加--allow-文件訪問從-文件到Chrome啓動命令行

做一個BAT文件,讓你的用戶點擊來啓動你的應用程序

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

換出http://爲你的文件url。

+1

是否有這樣做的另一種方式,任何「啞」人可以使用嗎? –

+0

@Ivan看起來像不是:http://code.google.com/p/chromium/issues/detail?id=121406 - 這個錯誤與一個仍然沒有解決的更大的錯誤合併在一起。但是,您可以創建Chrome的快捷方式,並將該標誌添加到屬性中的路徑(稍微比製作批處理腳本IMHO更容易)。 – apsillers

+0

它解決了,但它不是「完美」......這是一種「解決方法」^^但是,任何方式! =] –

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/