我多年来一直在编写Javascript,但刚才意识到我并不完全理解这些"HTML-y"方法实际上是如何与DOM交互的.
我的假设是,当HTML被解释为DOM时,浏览器会保留关于哪个HTML元素成为哪个DOM节点的引用.
因此,.getElementById当您选择元素时,浏览器会通过引用返回相关节点.为什么不这样做.getNodeById而且更正确?
我的假设是.innerHTML浏览器在运行时将其解释为DOM.但是,在像IE7这样的旧浏览器中,.innerHTML不能用于创建表节点.这告诉我,它原本只是为了修改现有节点的文本属性,但它似乎很奇怪,它存在,我们不只是使用.innerText.
我想我只是对一些Javascript历史感到困惑.
那么,事情是,像.innerHTML并.getElementById没有真正JavaScript对象都没有.它们是语言规范所称的"主机对象" - 它是FFI的一种形式..getElementById在大多数浏览器中调用时会发生的情况是,字符串从JS字符串编组到DOM字符串,然后传递给C++代码.
事实上,他们可以拥有他们喜欢的任何语义 - 语言不能保证他们的行为方式(对于其他DOM对象,如定时器和XHR也是如此).
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |