我试图在ClojureScript中编写PhantomJS脚本。我瞄准Node并使用phantomjs-node [1]。我有一个基本的例子工作:
(def phantom (js/require "phantom"))
(defn -main [& args]
(-> phantom
(.create (fn [browser]
(-> browser
(.createPage (fn [page]
(-> page
(.open "http://google.com" (fn [status]
(if (= status "success")
(-> page (.render "example.png")))
(-> browser .exit)))))))))))
现在,如果我使用PhantomJS网页对象的evaluate
函数[2],我会出现以下错误:
phantom stdout: ReferenceError: Can't find variable: <namespace here>
当编译成JavaScript时,要评估的代码包含CLJS名称空间,因此在PhantomJS&#39;的上下文中没有正确评估。网页对象。这是一个例子:
(defn -main [& args]
(-> phantom
(.create (fn [browser]
(-> browser
(.createPage (fn [page]
(-> page
(.open "http://google.com" (fn [status]
(println (str "opened google? " status))
(-> page
(.evaluate #(-> document .-title)
#(do
(println (str "Page title is " %))
(-> browser .exit))))))))))))))
如何防止在PhantomJS的网页对象中使用CLJS命名空间命名代码?或者其次我还有其他选择吗?
答案 0 :(得分:3)
You need to use js/document
instead of document
.
document
is a reference to clojurescript variable, js/document
is a document in js world.