对于ClojureScript
项目,我正在寻找一种简洁的方式来从客户端的外部文件HTML
中提取内容。该内容实际上是通过格式为Markdown
的ajax调用接收的,后者随后被解析为HTML
。所以一个HTML
字符串是一个出发点。从ClojureScript中的html字符串中提取元素
(def html-string "<p>Something, that <a>was</a> Markdown before</p>")
的库Enlive
和Garden
例如使用载体来表达CSS选择,这都是必须的。 Enlive
有一个叫做Enfocus
的前端姐姐,它提供了类似的语义。
下面是一个enfocus
例如,提取从目前的DOM一些内容:
(require '[enfocus.core :as ef])
(ef/from js/document.head :something [:title]
(ef/get-text))
;;{:something "My Title"}
如果有更多的比赛:something
值将成为一个载体。我无法弄清楚,如何将这个函数应用于任意的HTML
字符串。我能得到的最接近的是通过使用该功能:
(defn html->node [h]
(doto (.createElement js/document "div")
(aset "innerHTML" h)))
然后:
(ef/from (html->node html-string) :my-link [:a]
(ef/get-text))
;;{:my-link "was"}
然而,这是不是很干净,因为现在有一个div包裹的一切,这可能会导致一些麻烦的情况。
也许只是把你div的则firstChild 。 –