3

我计划通过双击在浏览器中打开它来创建一个供本地使用的静态 html 文件(没有运行 http 服务器)。

在一个文件夹内(与索引文件位于同一文件夹中),我计划添加“项目”文件,这样当我打开主文件时,它会列出该文件夹内的所有 html 文件,并创建一些带有链接的导航列表到文件。稍后我可以在文件之间添加一些导航(交叉链接),但这是另一个问题。

主要问题是索引文件不知道有多少(以及哪些)项目文件提前,但应该在加载索引页面时动态列出它们,并在一些内部创建链接列表索引页面中的静态元素。

更新:显示或多或少我想要的(不是javascript语法)的伪代码片段将是:

for (filename in listfiles(directory='somedirectory', filetype='html') {
    somediv.appendChild(elementType='a', href=filename)

知道如何在没有服务器端脚本的情况下执行此操作吗?重要的是要明确这是供个人使用,与互联网或 Web 开发无关。

谢谢阅读!

4

3 回答 3

1

不完全了解您的目标,但如果您想获取页面内容并将其加载到另一个页面中,您可以使用http://api.jquery.com/load/。但是,某些浏览器会在本地阻止它。我已经从文本文件中加载了内容,所以如果它能够从您提到的文件中读取,我想您将能够提取您需要的内容

于 2013-01-10T11:55:20.143 回答
1

这是一个有点老的问题,但我认为很多人都试图找到一些解决方案。这是一个。

我使用NPAPI FILE IO扩展创建了这种解决方案。已经编译了扩展 DLL / SO,因此如果您不想重新编译,例如添加新方法,则无需重新编译。您可以使用该库并开发 Firefox、chrome 的扩展,也许还可以与 IE 的 AtiveX 组件一起开发。这是我为 Chrome 执行此操作的方法。

1)下载svn repo。

2) 对于较新的 Chrome 版本,编辑manifest.json位于test\extension-folder 下的 -file。下面是我的 manifest.json 文件

{
  "manifest_version": 2,
  "name": "npapi-file-io-test",
  "description": "NPAPI demo",
  "version": "1.0",
  "description": "Test extension for npapi-file-io project",
  "background": {
    "page": "background.html"
  },
  "plugins": [{"path": "npapi-file-io-32.dll", "public": true},{"path": "npapi-file-io-32.so", "public": true},{"path": "npapi-file-io-64.so", "public": true}]
}

3)将扩展安装到chrome中。

4)在页面中使用扩展名。下面是一个列出 /tmp 文件夹中文件的示例

<!DOCTYPE XHTML>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>NPAPI File IO test</title>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
    $(document).ready(function() {
        var fs = $('#fs')[0];
        var  dir = "/tmp";
        var files = fs.listFiles(dir);
        for (var f in files) {
            if (files[f].type == "file") {
                $('#filelist').append('<a href="file:///'+dir+"/"+files[f].name+'">'+files[f].name+'</a><br/>');
            }
        }
    });
</script>
</head>
<body>
    <embed type="application/x-npapi-file-io" id="fs">
    <div id="filelist"></div>
</body>
</html>
于 2013-09-04T05:20:26.827 回答
1

AFAIK,不可能用纯 JavaScript 做到这一点。您需要一些服务器端代码告诉浏览器文件列表。可能最简单的方法是进行 AJAX 调用,其中服务器响应所需的文件列表。

这正是jQuery 文件树所做的。这是一个有点旧的代码(从 2008 年开始),所以可能与当前版本的 jQuery 存在一些不兼容,但你可以从中获得一些灵感。:-)

于 2013-01-10T14:33:36.977 回答