我想編寫一個小型html文件,該文件可以在本地運行並在我的計算機上操作一個小文本文件。我的要求是:如何從本地運行的html + javascript頁面訪問和讀取本地文件
- 文本文件坐落在一個目錄下我的電腦(的test.txt)
- HTML文件在同一目錄下的文本文件(test.html中)在
- 我想在html中使用javascript來讀寫文本文件。
這可能嗎?如果是的話,我如何使用javascript讀寫我的文本文件?
我想編寫一個小型html文件,該文件可以在本地運行並在我的計算機上操作一個小文本文件。我的要求是:如何從本地運行的html + javascript頁面訪問和讀取本地文件
這可能嗎?如果是的話,我如何使用javascript讀寫我的文本文件?
正如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元素,它指向您的本地目錄和您的文件。
通常情況下,這是不可能的,也是一個安全問題。
如果你使用一些插件(ActiveX,FF擴展等),它們可能會讓你這樣做。
還有本地存儲的主題,您可以使用最新的瀏覽器。
從您的意見,我想知道爲什麼不使用PHP/Ruby任何其他服務器端語言這樣做?他們專爲此而量身定製。
爲什麼它是一個本地html文件訪問本地文本文件的安全問題? –
你會如何區分本地和外部?什麼會阻止我將HTML文件「放入」你的機器,因此它是本地的? –
我想知道,如果這個案件是不同的,因爲HTML文件來自我想讀/寫文件相同的目錄。所以他們來自相同的來源或相同的網址。不知道,如果這是正確的,只是猜測... – gyurisc
由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文件本身存在。
最初它看起來像是重複的,我投票結束。對不起。我的投票被鎖定,我無法撤消最後的投票。如果你在Windows系統上,我有一些建議給你。 – KooiInc