我在cljs文件中有以下内容
(defn load-coords []
(let [svg (.getSVGDocument (. js/document (getElementById "game-board")))
s (ef/from svg
:coords "#circles circle"
(fn [circle]
{:x (.-baseVal.value (.-cx circle))
:y (.-baseVal.value (.-cy circle))
}))]
.....
当我尝试使用:optimisations :advanced
编译项目时,在浏览器中运行项目js时出现以下错误消息
TypeError:document.getElementById(...)。eh不是函数
似乎.getSVGDocument
可能会在编译器中被“破坏”,有什么方法可以“排除”除的 externs 之外的其他事情:优化:简单
我甚至不确定如何将它包含在exter中,因为它是js元素规范的一部分......比如我如何在外部写入它?
答案 0 :(得分:2)
getSVGDocument
不是Closure-compiler中的externs的一部分。但是,您可以提供自己的外部来纠正问题。见https://stackoverflow.com/a/21122560/1211524
您需要知道要添加定义的元素类型。例如,如果您想将其添加到HTMLElement
类型,它可能类似于:
/**
* @fileoverview
* @externs
*/
/**
* @return {HTMLElement} this should really be SVGElement -
* but closure-compiler doesn't recognize that type
*/
HTMLElement.prototype.getSVGDocument = function();