fcktools_ie.js
上传用户:dbstep
上传日期:2022-08-06
资源大小:2803k
文件大小:6k
源码类别:

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

开发平台:

ASP/ASPX

  1. /*
  2.  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
  3.  * Copyright (C) 2003-2009 Frederico Caldeira Knabben
  4.  *
  5.  * == BEGIN LICENSE ==
  6.  *
  7.  * Licensed under the terms of any of the following licenses at your
  8.  * choice:
  9.  *
  10.  *  - GNU General Public License Version 2 or later (the "GPL")
  11.  *    http://www.gnu.org/licenses/gpl.html
  12.  *
  13.  *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
  14.  *    http://www.gnu.org/licenses/lgpl.html
  15.  *
  16.  *  - Mozilla Public License Version 1.1 or later (the "MPL")
  17.  *    http://www.mozilla.org/MPL/MPL-1.1.html
  18.  *
  19.  * == END LICENSE ==
  20.  *
  21.  * Utility functions. (IE version).
  22.  */
  23. FCKTools.CancelEvent = function( e )
  24. {
  25. return false ;
  26. }
  27. // Appends one or more CSS files to a document.
  28. FCKTools._AppendStyleSheet = function( documentElement, cssFileUrl )
  29. {
  30. return documentElement.createStyleSheet( cssFileUrl ).owningElement ;
  31. }
  32. // Appends a CSS style string to a document.
  33. FCKTools.AppendStyleString = function( documentElement, cssStyles )
  34. {
  35. if ( !cssStyles )
  36. return null ;
  37. var s = documentElement.createStyleSheet( "" ) ;
  38. s.cssText = cssStyles ;
  39. return s ;
  40. }
  41. // Removes all attributes and values from the element.
  42. FCKTools.ClearElementAttributes = function( element )
  43. {
  44. element.clearAttributes() ;
  45. }
  46. FCKTools.GetAllChildrenIds = function( parentElement )
  47. {
  48. var aIds = new Array() ;
  49. for ( var i = 0 ; i < parentElement.all.length ; i++ )
  50. {
  51. var sId = parentElement.all[i].id ;
  52. if ( sId && sId.length > 0 )
  53. aIds[ aIds.length ] = sId ;
  54. }
  55. return aIds ;
  56. }
  57. FCKTools.RemoveOuterTags = function( e )
  58. {
  59. e.insertAdjacentHTML( 'beforeBegin', e.innerHTML ) ;
  60. e.parentNode.removeChild( e ) ;
  61. }
  62. FCKTools.CreateXmlObject = function( object )
  63. {
  64. var aObjs ;
  65. switch ( object )
  66. {
  67. case 'XmlHttp' :
  68. // Try the native XMLHttpRequest introduced with IE7.
  69. if ( document.location.protocol != 'file:' )
  70. try { return new XMLHttpRequest() ; } catch (e) {}
  71. aObjs = [ 'MSXML2.XmlHttp', 'Microsoft.XmlHttp' ] ;
  72. break ;
  73. case 'DOMDocument' :
  74. aObjs = [ 'MSXML2.DOMDocument', 'Microsoft.XmlDom' ] ;
  75. break ;
  76. }
  77. for ( var i = 0 ; i < 2 ; i++ )
  78. {
  79. try { return new ActiveXObject( aObjs[i] ) ; }
  80. catch (e)
  81. {}
  82. }
  83. if ( FCKLang.NoActiveX )
  84. {
  85. alert( FCKLang.NoActiveX ) ;
  86. FCKLang.NoActiveX = null ;
  87. }
  88. return null ;
  89. }
  90. FCKTools.DisableSelection = function( element )
  91. {
  92. element.unselectable = 'on' ;
  93. var e, i = 0 ;
  94. // The extra () is to avoid a warning with strict error checking. This is ok.
  95. while ( (e = element.all[ i++ ]) )
  96. {
  97. switch ( e.tagName )
  98. {
  99. case 'IFRAME' :
  100. case 'TEXTAREA' :
  101. case 'INPUT' :
  102. case 'SELECT' :
  103. /* Ignore the above tags */
  104. break ;
  105. default :
  106. e.unselectable = 'on' ;
  107. }
  108. }
  109. }
  110. FCKTools.GetScrollPosition = function( relativeWindow )
  111. {
  112. var oDoc = relativeWindow.document ;
  113. // Try with the doc element.
  114. var oPos = { X : oDoc.documentElement.scrollLeft, Y : oDoc.documentElement.scrollTop } ;
  115. if ( oPos.X > 0 || oPos.Y > 0 )
  116. return oPos ;
  117. // If no scroll, try with the body.
  118. return { X : oDoc.body.scrollLeft, Y : oDoc.body.scrollTop } ;
  119. }
  120. FCKTools.AddEventListener = function( sourceObject, eventName, listener )
  121. {
  122. sourceObject.attachEvent( 'on' + eventName, listener ) ;
  123. }
  124. FCKTools.RemoveEventListener = function( sourceObject, eventName, listener )
  125. {
  126. sourceObject.detachEvent( 'on' + eventName, listener ) ;
  127. }
  128. // Listeners attached with this function cannot be detached.
  129. FCKTools.AddEventListenerEx = function( sourceObject, eventName, listener, paramsArray )
  130. {
  131. // Ok... this is a closures party, but is the only way to make it clean of memory leaks.
  132. var o = new Object() ;
  133. o.Source = sourceObject ;
  134. o.Params = paramsArray || [] ; // Memory leak if we have DOM objects here.
  135. o.Listener = function( ev )
  136. {
  137. return listener.apply( o.Source, [ ev ].concat( o.Params ) ) ;
  138. }
  139. if ( FCK.IECleanup )
  140. FCK.IECleanup.AddItem( null, function() { o.Source = null ; o.Params = null ; } ) ;
  141. sourceObject.attachEvent( 'on' + eventName, o.Listener ) ;
  142. sourceObject = null ; // Memory leak cleaner (because of the above closure).
  143. paramsArray = null ; // Memory leak cleaner (because of the above closure).
  144. }
  145. // Returns and object with the "Width" and "Height" properties.
  146. FCKTools.GetViewPaneSize = function( win )
  147. {
  148. var oSizeSource ;
  149. var oDoc = win.document.documentElement ;
  150. if ( oDoc && oDoc.clientWidth ) // IE6 Strict Mode
  151. oSizeSource = oDoc ;
  152. else
  153. oSizeSource = win.document.body ; // Other IEs
  154. if ( oSizeSource )
  155. return { Width : oSizeSource.clientWidth, Height : oSizeSource.clientHeight } ;
  156. else
  157. return { Width : 0, Height : 0 } ;
  158. }
  159. FCKTools.SaveStyles = function( element )
  160. {
  161. var data = FCKTools.ProtectFormStyles( element ) ;
  162. var oSavedStyles = new Object() ;
  163. if ( element.className.length > 0 )
  164. {
  165. oSavedStyles.Class = element.className ;
  166. element.className = '' ;
  167. }
  168. var sInlineStyle = element.style.cssText ;
  169. if ( sInlineStyle.length > 0 )
  170. {
  171. oSavedStyles.Inline = sInlineStyle ;
  172. element.style.cssText = '' ;
  173. }
  174. FCKTools.RestoreFormStyles( element, data ) ;
  175. return oSavedStyles ;
  176. }
  177. FCKTools.RestoreStyles = function( element, savedStyles )
  178. {
  179. var data = FCKTools.ProtectFormStyles( element ) ;
  180. element.className = savedStyles.Class || '' ;
  181. element.style.cssText = savedStyles.Inline || '' ;
  182. FCKTools.RestoreFormStyles( element, data ) ;
  183. }
  184. FCKTools.RegisterDollarFunction = function( targetWindow )
  185. {
  186. targetWindow.$ = targetWindow.document.getElementById ;
  187. }
  188. FCKTools.AppendElement = function( target, elementName )
  189. {
  190. return target.appendChild( this.GetElementDocument( target ).createElement( elementName ) ) ;
  191. }
  192. // This function may be used by Regex replacements.
  193. FCKTools.ToLowerCase = function( strValue )
  194. {
  195. return strValue.toLowerCase() ;
  196. }