回味JS(八)关于DOM
DOM的节点类型有哪几种?
- Document
- DocumentType,即doctype标签(比如)
- Element
- Attribute,属性
- Text
- Comment, 注释
- DocumentFragment, 文档片段
如何获取document对象?
- 正常的网页,直接使用document或window.document。
- iframe框架里面的网页,使用iframe节点的contentDocument属性。
- Ajax 操作返回的文档,使用XMLHttpRequest对象的responseXML属性。
- 内部节点的ownerDocument属性。
- document.domain属性返回当前文档的域名,不包含协议和接口
- 次级域名的网页,可以把document.domain设为对应的上级域名,修改后,document.domain相同的两个网页,可以读取对方的资源,比如设置的 Cookie。
- appendChild是每次插入的内容都成为该元素的最后一个子元素。(插入)
- innerHTML是整个重写该元素内的所有HTML代码,也就是说之前写的那些都会被覆盖。(覆盖)
- 从性能上说,innerHTML效率要高一些,因为直接解析字符串比创建html节点对象再生成html节点要快。
- 但使用inner HTML的话,如果你在原来的子元素上绑定了事件的话,重写后事件绑定仍然还在; 而且js代码和html代码耦合程度高,不利于维护
- document.createTextNode方法用来生成文本节点,这个节点,被浏览器当作文本渲染,而不是当作 HTML 代码渲染。
- createTextNode方法对大于号和小于号进行转义,所以像这样的脚本会被转义一遍,既不执行避免了js注入攻击,又可以用来展示用户的输入
- 不过createTextNode不对单引号和双引号转义,所以不能用来对 HTML 属性赋值。
如:
// 添加数据var div = document.getElementById('test');
div.dataset.columns === 5;
// true
注意: 如果在data-之后的属性名称中有连词线,且后面跟了一个英文字母,那么连词线会取消,该字母变成大写,如
data-abc-def对应dataset.abcDef
,但如果是其他字符则不变。推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- 四首关于旅行记忆的外文歌曲
- 八、「料理风云」
- 醒不来的梦
- 关于自我为中心的一点感想
- 2018.03.18
- 被新冠“病毒”感染的日常生活(八)
- 「按键精灵安卓版」关于全分辨率脚本的一些理解(非游戏app)
- 【同心同舵】郑友贤第八季思维导图武林计划No.15《点评作业5》
- 第二十八封信