BOM DOM

本文深入探讨了BOM(字节顺序标记)的作用及其在不同编码格式中的表现,同时介绍了DOM(文档对象模型)的概念与操作方法,包括getElementById()和getElementsByTagName()的使用。
摘要由CSDN通过智能技术生成

BOM

BOM(Byte Order Mark),字节顺序标记,出现在文本文件头部,Unicode编码标准中用于标识文件是采用哪种格式的编码。

BOM —— Byte Order Mark,中文名译作“ 字节顺序标记”。在这里找到一段关于 BOM 的说明:
  在UCS 编码中有一个叫做 "Zero Width No-Break Space" ,中文译名作“零宽无间断间隔”的字符,它的编码是 FEFF。而 FFFE 在 UCS 中是不存在的字符,所以不应该出现在实际传输中。UCS 规范建议我们在传输 字节流前,先传输字符 "Zero Width No-Break Space"。这样如果接收者收到 FEFF,就表明这个字节流是 Big-Endian 的;如果收到FFFE,就表明这个字节流是 Little- Endian 的。因此字符 "Zero Width No-Break Space" (“零宽无间断间隔”)又被称作 BOM。
  UTF-8 不需要 BOM 来表明 字节顺序,但可以用 BOM 来表明编码方式。字符 "Zero Width No-Break Space" 的 UTF-8 编码是 EF BB BF。所以如果接收者收到以 EF BB BF 开头的 字节流,就知道这是 UTF-8编码了。Windows 就是使用 BOM 来标记文本文件的编码方式的。
  字符U+FEFF如果出现在字节流的开头,则用来标识该字节流的 字节序,是高位在前还是低位在前。如果它出现在字节流的中间,则表达零宽度非换行空格的意义,用户看起来就是一个空格。从 Unicode3.2开始,U+FEFF只能出现在字节流的开头,只能用于标识字节序,就如它的名称——字节序标记——所表示的一样;除此以外的用法已被舍弃。取而代之的是,使用U+2060来表达零宽度无断空白。
  类似WINDOWS自带的记事本等软件,在保存一个以 UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于 PHP来说,BOM是个大麻烦。
  PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。由此造成即使页面的 top padding 设置为0,也无法让整个网页紧贴浏览器顶部,因为在html一开头有这3个字符呢!
编码
表示 ( 十六进制)
表示 ( 十进制)
EF BB BF
239 187 191
UTF-16(大端序)
FE FF
254 255
UTF-16(小端序)
FF FE
255 254
UTF-32(大端序)
00 00 FE FF
0 0 254 255
UTF-32(小端序)
FF FE 00 00
255 254 0 0
2B 2F 76和以下的 一个字节:[ 38 | 39 | 2B | 2F ]
43 47 118和以下的 一个字节:[ 56 | 57 | 43 | 47 ]
en:UTF-1
F7 64 4C
247 100 76
en:UTF-EBCDIC
DD 73 66 73
221 115 102 115
en:Standard Compression Scheme for Unicode
0E FE FF
14 254 255
en:BOCU-1
FB EE 28 及可能跟随着FF
251 238 40 及可能跟随着255
GB-18030
84 31 95 33
132 49 149 51

 

 

DOM

文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口。在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象的标准模型就称为DOM。Document Object Model的历史可以追溯至1990年代后期微软与Netscape的“浏览器大战”,双方为了在JavaScriptJScript一决生死,于是大规模的赋予浏览器强大的功能。微软在网页技术上加入了不少专属事物,既有VBScriptActiveX、以及微软自家的DHTML格式等,使不少网页使用非微软平台及浏览器无法正常显示。DOM即是当时蕴酿出来的杰作。

通过使用getElementByld()和getElementsByTagName()方法

  通过使用一个元素节点的parentNode、firstChild以及lastChild属性

  getElementByld()和getElmementsTagName()这两种方法,可查找整个HTML文档中的任何HTML元素。

   这两种方法会忽略文档的结构。这两种方法会向你提供任何你所需要的HTML元素,不论他们在文档中所处的位置。

  getElementByld()可通过指定的ID来返回元素:

  getElementByld()语法

  document.getElementByld("ID");注释:getElementByld()无法工作在XML中。在XML文档中,你必须通过拥有类型id的属性来进行搜索,而此类型必须在XMLDTD中进行声明。

  getElementsByTagName()方法会使用指定的标签名返回所有的元素(作为一个节点列表),这些元素是你在使用

此方法时所处的元素的后代。

getElementsByTagName() 可被用于任何的 HTML 元素:

getElementsByTagName() 语法

document.getElementsByTagName("标签名称");或者:

document.getElementById('ID').getElementsByTagName("标签名称");

 

转载于:https://www.cnblogs.com/wang1998/p/9866710.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值