`

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);
			}
		}
	   
	}
分享到:
评论

相关推荐

    JS操作XML文件,兼容火狐、IE

    例如,IE支持的`selectNodes()`和`selectSingleNode()`方法在Firefox中不可用。在这种情况下,你可以使用`getElementsByTagName()`和`querySelector()`/`querySelectorAll()`作为替代。 6. `show.js`中的实现 文件`...

    JS读取XML例子(兼容IE和FF).rar

    此外,IE支持`selectNodes()`和`selectSingleNode()`方法,而其他浏览器则不支持。 5. **XML序列化** 如果需要将处理过的XML数据返回到字符串,可以使用`XMLSerializer`对象的`serializeToString()`方法。但请注意...

    IE下获取XPATH小工具源码_xpath_

    C#中,可以利用`XmlNode.SelectSingleNode()`方法找到指定的XPath路径,或者`XmlNode.SelectNodes()`方法获取所有匹配的节点。 3. **XPath表达式构建**:在获取到用户选择的元素后,小工具需要根据DOM结构自动生成...

    javascript读取XML文件方法

    // 对于非IE浏览器(例如Chrome, Firefox) if (window.DOMParser) { var xmlDoc = new DOMParser().parseFromString("", "text/xml"); } ``` ##### 2. 加载XML文件或字符串 创建了DOMDocument对象后,我们可以...

    跨浏览器开发经验总结

    1. **IE、Firefox支持JavaScript往剪贴板写入内容** 2. **Opera、Safari、Chrome使用ActionScript往剪贴板写入内容** - 不同浏览器对于剪贴板操作的支持程度不同,需要采取不同的策略。 #### 五、事件 1. **...

    JS实现兼容各浏览器解析XML文档数据的方法

    例如,在IE浏览器中,使用selectNodes方法选取节点,并通过selectSingleNode获取单个节点的文本信息。而在Chrome和Firefox中,则使用getElementsByTagName方法获取节点列表,再通过索引获取单个节点的textContent...

    Javascript操作XML和HTML

    3. 在Firefox浏览器下,可以使用`document.implementation.createDocument`来将XML字符串转换为DOM对象。示例代码如下: ```javascript var xmlDoc = document.implementation.createDocument("", "doc", null); var...

    javascript操作XML与HTML

    2. **Firefox 下将字符串转换为 DOM 对象** ```javascript // 创建 DOM 对象 var xmlDoc = document.implementation.createDocument("", "doc", null); var xmlString = "&lt;book&gt;&lt;title&gt;ajax&lt;/title&gt;&lt;author&gt;...

Global site tag (gtag.js) - Google Analytics