瀏覽器對不合法XML元素名稱的處理
0 |
因程式Bug搞出一個包含無效元素名稱的XML,發現IE的反應很有趣,XML物件的firstChild屬性會傳回null。
依XML規格,XML元素名稱必須符合以下條件:
- 包含字母、數字及其他字元
- 不可以數字或標點符號起始
- 開頭不可以是xml, XML或Xml
- 不能包含空白
我寫了個範例挑戰了這個禁忌,順手試了一下不合法XML格式在各瀏覽器下的反應。
var xmlStr ="<data><0>A</0></data>";
var xd = null;
if (window.ActiveXObject) {
xd = new ActiveXObject("Microsoft.XMLDOM");
xd.async = false; xd.loadXML(xmlStr);
}
else if (typeof DOMParser != "undefined")
xd = new DOMParser().parseFromString(xmlStr, "text/xml");
var elem = xd.firstChild;
if (elem == null)
alert("firstChild is null");
else
alert(elem.xml || (new XMLSerializer()).serializeToString(elem));
【測試結果】
IE:
傳回nullFirefox:
得到<?xml-stylesheet href="chrome://global/locale/intl.css" type="text/css"?>Chrome/Safari:
<data><parsererror xmlns="http://www.w3.org/1999/xhtml" style="display: block; white-space: pre; border: 2px solid #c77; padding: 0 1em 0 1em; margin: 1em; background-color: #fdd; color: black"><h3>This page contains the following errors:</h3><div style="font-family:monospace;font-size:12px">error on line 1 at column 8: StartTag: invalid element name
</div><h3>Below is a rendering of the page up to the first error.</h3></parsererror></data>Opera:
<parsererror xmlns="http://www.mozilla.org/newlayout/xml/parsererror.xml">Error<sourcetext>Unknown source</sourcetext></parsererror>
本次最人性化回應獎,我決定頒給Chrome/Safari~~
Comments
Be the first to post a comment