2016-03-06 92 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