2011-06-18 60 views
8

我想編寫一個小型html文件,該文件可以在本地運行並在我的計算機上操作一個小文本文件。我的要求是:如何從本地運行的html + javascript頁面訪問和讀取本地文件

  • 文本文件坐落在一個目錄下我的電腦(的test.txt)
  • HTML文件在同一目錄下的文本文件(test.html中)在
  • 我想在html中使用javascript來讀寫文本文件。

這可能嗎?如果是的話,我如何使用javascript讀寫我的文本文件?

+0

最初它看起來像是重複的,我投票結束。對不起。我的投票被鎖定,我無法撤消最後的投票。如果你在Windows系統上,我有一些建議給你。 – KooiInc

回答

7

正如Itay Moav的回答中所討論的,使用本地HTML文件寫入本地文件可能會成爲一個問題,無需運行在提升的特權模式下並具有額外的Javascript功能(允許您保存本地文件)。

但是,從HTML文件訪問本地文件是完全可能的。以下是一些示例代碼。

mytext.txt

My local text file 

local.html

<html> 
<head> 
<base href="file:///C:/path/to/your/folder/"/> 
<script> 
window.onload = function(){ 
    var iframe = document.createElement('iframe'); 
    iframe.id = 'iframe'; 
    iframe.style.display = 'none'; 
    document.body.appendChild(iframe); 
    iframe.src = 'mytext.txt'; 
    setTimeout(function(){ 
     var text = document.getElementById('iframe').contentDocument.body.firstChild.innerHTML; 
     alert(text); 
    }, 1000); 
} 
</script> 
</head> 
<body> 
<h1>Hello World!</h1> 
</body> 
</html> 

這將會使HTML頁面加載後警報1秒(允許的iframe加載第一)並將包含mytext.txt文件中的內容。

注意,如果是純文本,Firefox會用PRE元素包裝它,這就是我爲什麼要做firstChild。另外,請注意使用BASE元素,它指向您的本地目錄和您的文件。

+0

感謝您的建議。如果需要,可以以某種方式寫入文件嗎? – gyurisc

+0

@gyurisc - 除非你有一個具有特殊功能的本地運行的腳本(例如JScript)。例如,Javascript不允許目錄發現和文件操作;你將需要Javascript與本地目錄功能。 –

+0

Firefox說權限被拒絕。 – Andrew

2

通常情況下,這是不可能的,也是一個安全問題。
如果你使用一些插件(ActiveX,FF擴展等),它們可能會讓你這樣做。
還有本地存儲的主題,您可以使用最新的瀏覽器。

從您的意見,我想知道爲什麼不使用PHP/Ruby任何其他服務器端語言這樣做?他們專爲此而量身定製。

+2

爲什麼它是一個本地html文件訪問本地文本文件的安全問題? –

+2

你會如何區分本地和外部?什麼會阻止我將HTML文件「放入」你的機器,因此它是本地的? –

+0

我想知道,如果這個案件是不同的,因爲HTML文件來自我想讀/寫文件相同的目錄。所以他們來自相同的來源或相同的網址。不知道,如果這是正確的,只是猜測... – gyurisc

7

由Jared給出的例子工作正常。但是,設置未知的觀看時間不是有吸引力的。相反,將onload事件附加到iframe中,調用一個函數來讀取文本文件的內容,並儘快進行處理。

這裏是一個修改後的例子:

<html> 
<head> 
<script> 
function readfile() { 
    alert(document.getElementById('iframe').contentDocument.body.firstChild.innerHTML); 
} 
</script> 
</head> 
<body> 
<iframe id='iframe' src = 'test.txt' onload='readfile()'> </iframe> 
<h1>Hello World!</h1> 
</body> 
</html> 

的文件test.txt偏離方向在相同的目錄中上述HTML文件本身存在。

相關問題