2016-03-06 87 views
1

我正在尝试在文档页面中创建一个自动生成的目录表。基本上我需要浏览文档文本,通过名称找到我感兴趣的元素并相应地将它们添加到目录中。它也应该直接链接到元素。用Harp生成目录表

我已将文档内容放入_documentationBase.jade。然后有一个documentation.jade页面将添加目录和文档本身。我卡住的是我想获得部分_documentationBase.jade的DOM represantation。

部分给了我一个大字符串,并找到我想要的部分,我希望它成为一个文档,所以我可以调用像getElementsByName和更多。要从字符串中创建DOM对象,可以使用以下内容: - 文档:new Document().createElement('div').innerHTML = ...; - DOMParser:new DOMParser().parseFromString(...)

构建JS文件或作为的DOMParser在玉缓冲的代码将导致以下错误:

TypeError - Document is not a function

那么,什么是去了解这一点的最好方法是什么?我可以很容易地在客户端制作目录,但这对Harp来说并不是很好。我猜测可能有更简单的方法来解决这个问题?

+1

我花了数小时试图解决它。当我开始使用Express时,我想我会找到一个真正的解决方案(Harp被安装)。然后,我可以为NodeJS使用DOMParser库并将其提供给文档页面。这一切似乎都运行良好,但后来我意识到何时使用'harp compile'命令,在编译时没有任何Express/Node特定逻辑可用于Harp:X. – AquaGeneral

+0

也许是因为你需要使用'document',而不是'Document'? – alexey

+0

当使用Harp时,小写'document'为空,并且在使用Harp时大写'Document'不存在/未定义。 – AquaGeneral

回答

1

到目前为止我还没有找到一个优雅的内置解决方案,但这里是对我有用的。很想听到任何建议。

我在本地JSON中使用了一个标志,可以从EJS(或Pug)布局模板更容易地访问,并且所有DOM操作都发生在客户端。

... 

    <% if (references) { %> 
    <script> 
     // do something 
    </script> 
    <% } %> 

    </body> 
</html> 
+1

我一定会在你回复的那一天看到你的回复,但我完全忘了再次检查。在客户端执行DOM操作是一个体面的解决方案,但我真的希望在构建时完成。在接下来的几天里,我会继续研究是否可以在HarpJS中进行任何攻击,以便在构建时能够实现这一点。 – AquaGeneral