最近我们一直在谈论UI以及游览器特点。但是今天,我想通过讨论IE9 beta平台中的一些附加功能:DOMParser 和 XMLSerializer,回顾web发展历程。
它们是做什么的呢?
DOMParser能够在一个XML字符串中建立文档,XMLSerializer则允许你对它再次串行化。它们一起运用使得XML向DOM转化,就像运用JSON一样简单——使它更容易使用数据传输格式的XML。更为重要的是,由DOMParser生成的节点是十分灵活的,这意味着它们可以插入或者渲染在任何网页中。附带的XMLSerializer可以将原DOM节点,甚至是HTML文本的节点,串行化为一个XML字符串。这种本源性使得我们更容易直接使用数据, 而不必先转换为HTML。
它们又是如何工作的咧?
下面是一个APIS运用的基本例子。如果需更多细节以及一生动例子,请验证测试站点上的DOMParser 和 XMLSerializer演示程序。
// Parse a string into an XML document
var parser = new DOMParser();
var doc = parser.parseFromString("", "text/xml");
// Serialize any native DOM node to an XML string
// (including nodes from HTML documents)
var serializer = new XMLSerializer();
var xmlString = serializer.serializeToString(doc);
为了实现最佳交互式游览器兼容性, parseFromString的第二个参数应该是“text / xml”或“应用程序/ XML”。有关IE9支持的所有字符串列表,请参阅parseFromString MSDN文档。
为什么我们提及APIs?
虽然这些API是非标准的,但是最新版本的
Firefox,
Chrome, Safari, 和 Opera游览器都支持它。并且大量的现有站点和网络框架也都在使用。鉴于API的实际使用和跨浏览器支持,我们选择在
IE9浏览器中运用API,作为我们致力实现web上“相同标记”的一部分。有了这些API,可以帮助更多的网站以相同的方式跨浏览器运行相同的代码。它们也使得运用脚本中的XML更加容易。
这与MSXML又有什么不同呢?
MSXML提供一个XML结构,而这结构式独立于IE源DOM的。这意味着MSXML不能再网页中进行插入和渲染。MESXML对象也没有获得JavaScrip集成环境提供互操作性以及性能优势。当我们为了渲染,将MSXML中的元素复制到HTML中时,这种性能差异尤其明显。
这与XMLHttpRequest (XHR)有何关系?
XMLHttpRequest的responseXML属性中返回的仍是一个MSXML对象,但是你可以使用DOMParser以及responseText生成一个原生XML对象来代替。
// Using DOMParser with XMLHttpRequest
var parser = new DOMParser();
var xhr = new XMLHttpRequest();
...
var doc = parser.parseFromString(xhr.responseText, "text/xml");
...
关于XML解析错误是什么?
当所提供的XML格式不正确,该parseFromString API将提示:SYNTAX_ERR DOM Exception。这时,我们就需用配合XML文档中依据HTML5规范的innerHTML错误行为处理来选择。
下一步
如前文所提到的,现在很多站点已经使用DOMPareser和XMLSerializer APIs。当运用下列程序时,确保你的网页“
使用特征检测”能够正确识别这些API所支持的代码。
if(window.DOMParser) {
// Code relying on DOMParser support
} else {
// Fallback code
}
if(window.XMLSerializer) {
// Code relying on XMLSerializer support
} else {
// Fallback code
}
via:
ieblog标签:IE相关IE9Beta