在谷歌'的闭包编译器,{Element}和{HTMLElement}之间有什么区别

In Google's Closure Compiler, what is the difference between {Element} and {HTMLElement}?

本文关键字:Element HTMLElement 之间 区别 什么 谷歌 编译器 闭包      更新时间:2023-09-26

闭包编译器定义了{Element}和{HTMLElement}、{Document}和{HTMLDocument}。我应该如何选择使用哪一个来最大限度地利用闭包编译器?

它们不仅仅是一回事。有时,其中一个会导致"闭包编译器"错误消息,而另一个则不会。有时,一个可以在有效的闭包编译器"强制转换"中使用,而另一个则不能。

(也许区别与DOM1和DOM2有关,但怎么办?[为什么这很重要?]我应该在Javascript中始终使用一个或另一个,只在HTML5上运行吗?)


编辑:我正在寻找一个"经验法则",以快速而肮脏的方式告诉我如何编写好的代码。(当然,这可能是一些规范的"总结"或"真正意义上的"。)

使用Element,除非代码中的某些内容使用特定于HTMLElement的属性。

HTML元素特定属性:

HTMLElement.accessKey
HTMLElement.accessKeyLabel (Read only)
HTMLElement.contentEditable
HTMLElement.contextMenu 
HTMLElement.dir
HTMLElement.draggable
HTMLElement.dropzone (Read only)
HTMLElement.hidden
HTMLElement.inert
HTMLElement.innerText
HTMLElement.isContentEditable (Read only)
HTMLElement.itemId 
HTMLElement.itemProp (Read only)
HTMLElement.itemRef (Read only)
HTMLElement.itemScope 
HTMLElement.itemType (Read only)
HTMLElement.itemValue 
HTMLElement.lang
HTMLElement.noModule
HTMLElement.offsetHeight (Read only)
HTMLElement.offsetLeft (Read only)
HTMLElement.offsetParent (Read only)
HTMLElement.offsetTop (Read only)
HTMLElement.offsetWidth (Read only)
HTMLElement.properties (Read only)
HTMLElement.spellcheck
HTMLElement.style
HTMLElement.title
HTMLElement.translate 

HTML元素特定事件:

HTMLElement.oncopy 
HTMLElement.oncut 
HTMLElement.onpaste 
TouchEventHandlers.ontouchstart 
TouchEventHandlers.ontouchend 
TouchEventHandlers.ontouchmove 
TouchEventHandlers.ontouchenter 
TouchEventHandlers.ontouchleave 
TouchEventHandlers.ontouchcancel 

HTML元素特定的方法:

HTMLElement.attachInternals() 
HTMLElement.click()
HTMLElement.forceSpellCheck()