firefox并不支持selectSingleNode和selectNodes的解决方法

function test(){
var perid = document.thisForm.PerID.value; var xml="test";
if(window.ActiveXObject){
var xml=new ActiveXObject("Microsoft.XMLDOM");
xml.async=false;
xml.load("xxxx.xml"); }else if((typeof document.implementation != 'undefined')&&
(typeof document.implementation.createDocument!='undefined')){
xml = document.implementation.createDocument("", "", null); xml.async=false;
xml.load("xxxx.xml"); //firefox并不支持selectSingleNode和selectNodes方法;下面两段是用XPath来解决firefox模拟selectSingleNode和selectNodes方法,正确性有待解决
XMLDocument.prototype.selectSingleNode = Element.prototype.selectSingleNode = function (xpath){
var x = this .selectNodes(xpath)
if ( ! x || x.length < 1 ) return null ;
return x[ 0 ];
}
XMLDocument.prototype.selectNodes = Element.prototype.selectNodes = function (xpath){
var xpe = new XPathEvaluator();
var nsResolver = xpe.createNSResolver( this .ownerDocument == null ?
this .documentElement : this .ownerDocument.documentElement);
var result = xpe.evaluate(xpath, this , nsResolver, 0 , null );
var found = [];
var res;
while (res = result.iterateNext())
found.push(res);
return found;
} }
//下面就可以用selectSingleNode和selectNodes方法
var row=null; if(perid.substring(0,5)=="NO" && perid.length==9){
row=xml.selectSingleNode("root/row[@ID='"+perid+"']");
if (row!=null){
document.thisForm.MenuColor.value=row.getAttribute("CssFileName");
ChangeBgColor(document.thisForm.MenuColor.value);
}
} }
05-06 11:43