fckxml.js
上传用户:zghglow
上传日期:2022-08-09
资源大小:27227k
文件大小:3k
源码类别:

WEB源码(ASP,PHP,...)

开发平台:

JavaScript

  1. /*
  2.  * FCKeditor - The text editor for internet
  3.  * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  4.  * 
  5.  * Licensed under the terms of the GNU Lesser General Public License:
  6.  *  http://www.opensource.org/licenses/lgpl-license.php
  7.  * 
  8.  * For further information visit:
  9.  *  http://www.fckeditor.net/
  10.  * 
  11.  * "Support Open Source software. What about a donation today?"
  12.  * 
  13.  * File Name: fckxml.js
  14.  *  Defines the FCKXml object that is used for XML data calls
  15.  *  and XML processing.
  16.  *  This script is shared by almost all pages that compose the 
  17.  *  File Browser frameset.
  18.  * 
  19.  * File Authors:
  20.  *  Frederico Caldeira Knabben (fredck@fckeditor.net)
  21.  */
  22. var FCKXml = function()
  23. {}
  24. FCKXml.prototype.GetHttpRequest = function()
  25. {
  26. // Gecko / IE7
  27. if ( typeof(XMLHttpRequest) != 'undefined' )
  28. return new XMLHttpRequest() ;
  29. // IE6
  30. try { return new ActiveXObject("Msxml2.XMLHTTP") ; } 
  31. catch(e) {}
  32. // IE5
  33. try { return new ActiveXObject("Microsoft.XMLHTTP") ; }
  34. catch(e) {}
  35. }
  36. FCKXml.prototype.LoadUrl = function( urlToCall, asyncFunctionPointer )
  37. {
  38. var oFCKXml = this ;
  39. var bAsync = ( typeof(asyncFunctionPointer) == 'function' ) ;
  40. var oXmlHttp = this.GetHttpRequest() ;
  41. oXmlHttp.open( "GET", urlToCall, bAsync ) ;
  42. if ( bAsync )
  43. {
  44. oXmlHttp.onreadystatechange = function() 
  45. {
  46. if ( oXmlHttp.readyState == 4 )
  47. {
  48. oFCKXml.DOMDocument = oXmlHttp.responseXML ;
  49. if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 )
  50. asyncFunctionPointer( oFCKXml ) ;
  51. else
  52. alert( 'XML request error: ' + oXmlHttp.statusText + ' (' + oXmlHttp.status + ')' ) ;
  53. }
  54. }
  55. }
  56. oXmlHttp.send( null ) ;
  57. if ( ! bAsync )
  58. {
  59. if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 )
  60. this.DOMDocument = oXmlHttp.responseXML ;
  61. else
  62. {
  63. alert( 'XML request error: ' + oXmlHttp.statusText + ' (' + oXmlHttp.status + ')' ) ;
  64. }
  65. }
  66. }
  67. FCKXml.prototype.SelectNodes = function( xpath )
  68. {
  69. if ( navigator.userAgent.indexOf('MSIE') >= 0 ) // IE
  70. return this.DOMDocument.selectNodes( xpath ) ;
  71. else // Gecko
  72. {
  73. var aNodeArray = new Array();
  74. var xPathResult = this.DOMDocument.evaluate( xpath, this.DOMDocument, 
  75. this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), XPathResult.ORDERED_NODE_ITERATOR_TYPE, null) ;
  76. if ( xPathResult ) 
  77. {
  78. var oNode = xPathResult.iterateNext() ;
  79.   while( oNode )
  80.   {
  81.   aNodeArray[aNodeArray.length] = oNode ;
  82.   oNode = xPathResult.iterateNext();
  83.   }
  84. return aNodeArray ;
  85. }
  86. }
  87. FCKXml.prototype.SelectSingleNode = function( xpath ) 
  88. {
  89. if ( navigator.userAgent.indexOf('MSIE') >= 0 ) // IE
  90. return this.DOMDocument.selectSingleNode( xpath ) ;
  91. else // Gecko
  92. {
  93. var xPathResult = this.DOMDocument.evaluate( xpath, this.DOMDocument,
  94. this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), 9, null);
  95. if ( xPathResult && xPathResult.singleNodeValue )
  96. return xPathResult.singleNodeValue ;
  97. else
  98. return null ;
  99. }
  100. }