2017-04-03 71 views
0

我尝试构建一个脱机的仅基于客户端的应用程序。假设我有两个文件,data.txt和read.html,都在同一个目录中。阅读/“包括”某些本地文件 - 脱机 - 使用JavaScript

现在我想要做的就是读取(在read.html中)data.txt的内容,并且将它显示在DIV中(没有任何用户交互 - 所以没有任何<input type="file">或任何东西)。

我已经阅读了很多关于此的文章,都表示由于安全问题而无法打开本地文件。但我不确定这是否适用于离线应用程序。例如,我可以“几乎”达到想要我想下面的代码:

var w = window.open("data.txt"); 
var content = w.document.body.textContent; 
mydiv.innerHTML = editForPresentation(content); 
w.close(); 

唯一的问题是,这仅适用于.txt文件而不是如.xlsx文件,因为浏览器(我使用Edge)不会以明文方式打开后者。

必须有一个简单的方法来做到这一点,我忽略了吧?

回答

0

不,没有。客户端的Javascript无权访问文件系统。期。最后。

如果您只想使用javascript,您可以做些什么是使用Node.js(它是“服务器端”js库)或any other js server-side library创建服务器应用程序,并将其用作您想要的基础。然后你用你的javascript客户端访问服务器并询问你想要的文件。但是你必须有应用的两面。服务器和客户端。不仅客户。

window.open在浏览器窗口中打开资源,这就是它的工作原理。这就像你正在加载一个新的页面。然而二进制资源不会加载。 你也可以使用<script src='something'>加载js文件,它们会加载并运行。但是没有加载的文件可以访问文件系统。

+0

那么为什么我的例子工作?告诉浏览器就足够了:“以纯文本的形式阅读这个文件”。 – Remirror

+0

我必须将问题退还给您...为什么它仅适用于纯文本文件?考虑一下。想象一下,仅仅通过访问一个站点来加载二进制文件的安全含义,然后就可以使用javascript来保存系统中的文件。如果可能的话,很容易看出可能出现的caos级别。忘掉它。学习Node.js,你会更好地掌握它。 –

+0

看到我的版本的答案。 –