2007-05-30
mozilla中使用xpath的selectNodes()等方法
来自于:麦盾http://dev.iseasky.com
- var isMozilla = (true && document.implementation &&
- document.implementation.createDocument);
- var XML_COMPATIBLE;
- //window.onerror = function(){return true;};
- if(isMozilla && !XML_COMPATIBLE) {
- isMozilla = true;
- Element.prototype.__defineGetter__("text", function () { return this.firstChild.nodeValue; });
- Element.prototype.__defineGetter__("xml", function () {
- return (new XMLSerializer()).serializeToString(this);
- }
- );
- Element.prototype.selectSingleNode = function(xPath) {
- var xPath;
- var xresult = this.ownerDocument.evaluate(xPath, this
- //this.ownerDocument.createNSResolver(this.ownerDocument.documentElement)
- , null
- , XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
- if(xresult && xresult.snapshotLength > 0) {
- return xresult.snapshotItem(0);
- } else {
- return null;
- }
- }
- Element.prototype.selectNodes = function(xPath) {
- var xPath;
- var xresult = this.ownerDocument.evaluate(xPath, this
- //this.ownerDocument.createNSResolver(this.ownerDocument.documentElement)
- , null
- , XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
- var nod = null, nods = [], k = 0;
- while((nod=xresult.iterateNext())!=null) {
- nods[k++] = nod;
- }
- return nods;
- }
- XMLDocument.prototype.selectSingleNode = function(xPath) {
- var xPath;
- var xresult = this.evaluate(xPath, this
- , null//this.createNSResolver(this.documentElement)
- , XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
- if(xresult && xresult.snapshotLength > 0) {
- return xresult.snapshotItem(0);
- } else {
- return null;
- }
- }
- XMLDocument.prototype.selectNodes = function(xPath) {
- var xPath;
- var xresult = this.evaluate(xPath, this
- , null//this.createNSResolver(this.documentElement)
- , XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
- var nod = null, nods = [], k = 0;
- while((nod=xresult.iterateNext())!=null) {
- nods[k++] = nod;
- }
- return nods;
- }
- XML_COMPATIBLE = true;
- }
- // http
- var xpool=[], xmethod="POST";
- // isb = 1 :: function(body, status, flag{application|image|video|audio}, headers)
- function xsend(url, func, param, win, async, isb) {
- var param, url, func, win, async, isb;
- var xob;
- for(var k=0; k<xpool.length; k++) {
- // 0=uninitialized,1=loading,2=loaded,3=interactive,4=complete
- if(xpool[k].readyState==4||xpool[k].readyState==0) xob = xpool[k];
- }
- if(!xob) {
- if(window.XMLHttpRequest) {
- xob = new window.XMLHttpRequest();
- } else {
- var axo = ["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.4.0",
- "Msxml2.XMLHTTP","Microsoft.XMLHTTP"];
- var j = 0, jmax = axo.length; while(j<jmax) {
- try{
- xob=new ActiveXObject(axo[j++]);
- if(xob) break;
- }catch(e){}
- }
- }
- if(xob) xpool[xpool.length] = xob;
- }
- var xvalid = false, xerr = "unknow error";
- var ctyp = "application/x-www-form-urlencoded";
- if(xob) {
- if(!xmethod) xmethod = "POST";
- xmethod = xmethod.toUpperCase();
- if(param && typeof(param)=="string" && param.indexOf("=")<0) {
- if(!win) win = window;
- var fm = win.document.forms[param];
- if(fm) {
- var els = fm.elements;
- var d = [], kmax=els.length;
- for(var k=0; k<kmax; k++) {
- if(els[k].name) { d[d.length]= els[k].name +"=" +encodeURI(els[k].value); }
- }
- if(!url) url = fm.action;
- if(fm.method) method = fm.method;
- if(fm.enctype) ctyp = fm.enctype;
- param = d.join("&");
- xvalid = true;
- } else {
- xerr = "form '"+param+"' not found";
- }
- } else {
- if(url) { xvalid = true; } else { xerr = "unknow action"; }
- }
- } else {
- xerr = "no xmlhttp prepared";
- }
- if(xvalid) {
- xob.onreadystatechange = function() {
- if(xob.readyState==4) {
- if(func) {
- try {
- if(isb) {
- var ct = xob.getResponseHeader("Content-Type");
- func(xob.responseBody, xob.status
- , (ct&&(ct.indexOf("application")==0||ct.indexOf("audio")==0
- ||ct.indexOf("video")==0||ct.indexOf("image")==0)?1:0)
- , xob.getAllResponseHeaders());
- } else {
- func({"status":xob.status, "text":xob.responseText
- , "body":xob.responseBody,
- "headers":xob.getAllResponseHeaders()});
- }
- } catch(e) {
- func(xob);
- }
- }
- xob.abort();
- }
- };
- xob.open(xmethod, url, (async?1:0));
- //xob.setRequestHeader("Accept", "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg
- // , application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*");
- xob.setRequestHeader("Content-Type", ctyp+'; charset=UTF-8'); // request.characterEncoding
- if(!param) param = null;
- xob.send(param);
- return xob;
- }
- if(xerr) alert("xsend::" +xerr);
- return null;
- }
- /* xml´¦m */
- var doxbuff;
- function xdoc(u, xmlldr) {
- var u, xmlldr, flag;
- flag = (xmlldr?true:false);
- if (window.ActiveXObject) {
- doxbuff = new ActiveXObject("Microsoft.XMLDOM");
- doxbuff.setProperty("SelectionLanguage", "XPath");
- doxbuff.async=flag;
- doxbuff.onreadystatechange = function (ob) {
- if(dox.readyState == 4) { if(xmlldr && typeof(xmlldr) == "function") { xmlldr(doxbuff); }}
- };
- } else {
- doxbuff = document.implementation.createDocument("", "mindon", null);
- doxbuff.async=flag;
- doxbuff.addEventListener('load', function(evt) {
- if(xmlldr && typeof(xmlldr) == "function") {
- xmlldr(doxbuff);
- }
- }, false);
- }
- if(doxbuff) {
- if(u.substr(0,1)=="<") {
- if(document.all) doxbuff.loadXML(u);
- } else {
- doxbuff.load(u);
- }
- return doxbuff;
- } else { return null; }
- }
发表评论
- 浏览: 122107 次
- 性别:

- 来自: bj

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
[转]JSP语法的xml写法
...
-- by stonesfour -
【转】Java中的位运算符
太好了,谢谢楼主分享!
-- by qhncxf -
setTimeout和setInterval ...
setTimeout(function(parameter){return fu ...
-- by letle -
setTimeout和setInterval ...
其实你上面的用法是不规范的,用setTimeout或setInterval的时候 ...
-- by sheay -
html的DOCTYPE 问题
你
-- by zhengbin917943






评论排行榜