fcktools_ie.js
上传用户:ah_jiwei
上传日期:2022-07-24
资源大小:54044k
文件大小:6k
源码类别:

数据库编程

开发平台:

Visual C++

  1. /*
  2.  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
  3.  * Copyright (C) 2003-2007 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. var s = documentElement.createStyleSheet( "" ) ;
  36. s.cssText = cssStyles ;
  37. return s ;
  38. }
  39. // Removes all attributes and values from the element.
  40. FCKTools.ClearElementAttributes = function( element )
  41. {
  42. element.clearAttributes() ;
  43. }
  44. FCKTools.GetAllChildrenIds = function( parentElement )
  45. {
  46. var aIds = new Array() ;
  47. for ( var i = 0 ; i < parentElement.all.length ; i++ )
  48. {
  49. var sId = parentElement.all[i].id ;
  50. if ( sId && sId.length > 0 )
  51. aIds[ aIds.length ] = sId ;
  52. }
  53. return aIds ;
  54. }
  55. FCKTools.RemoveOuterTags = function( e )
  56. {
  57. e.insertAdjacentHTML( 'beforeBegin', e.innerHTML ) ;
  58. e.parentNode.removeChild( e ) ;
  59. }
  60. FCKTools.CreateXmlObject = function( object )
  61. {
  62. var aObjs ;
  63. switch ( object )
  64. {
  65. case 'XmlHttp' :
  66. aObjs = [ 'MSXML2.XmlHttp', 'Microsoft.XmlHttp' ] ;
  67. break ;
  68. case 'DOMDocument' :
  69. aObjs = [ 'MSXML2.DOMDocument', 'Microsoft.XmlDom' ] ;
  70. break ;
  71. }
  72. for ( var i = 0 ; i < 2 ; i++ )
  73. {
  74. try { return new ActiveXObject( aObjs[i] ) ; }
  75. catch (e)
  76. {}
  77. }
  78. if ( FCKLang.NoActiveX )
  79. {
  80. alert( FCKLang.NoActiveX ) ;
  81. FCKLang.NoActiveX = null ;
  82. }
  83. return null ;
  84. }
  85. FCKTools.DisableSelection = function( element )
  86. {
  87. element.unselectable = 'on' ;
  88. var e, i = 0 ;
  89. // The extra () is to avoid a warning with strict error checking. This is ok.
  90. while ( (e = element.all[ i++ ]) )
  91. {
  92. switch ( e.tagName )
  93. {
  94. case 'IFRAME' :
  95. case 'TEXTAREA' :
  96. case 'INPUT' :
  97. case 'SELECT' :
  98. /* Ignore the above tags */
  99. break ;
  100. default :
  101. e.unselectable = 'on' ;
  102. }
  103. }
  104. }
  105. FCKTools.GetScrollPosition = function( relativeWindow )
  106. {
  107. var oDoc = relativeWindow.document ;
  108. // Try with the doc element.
  109. var oPos = { X : oDoc.documentElement.scrollLeft, Y : oDoc.documentElement.scrollTop } ;
  110. if ( oPos.X > 0 || oPos.Y > 0 )
  111. return oPos ;
  112. // If no scroll, try with the body.
  113. return { X : oDoc.body.scrollLeft, Y : oDoc.body.scrollTop } ;
  114. }
  115. FCKTools.AddEventListener = function( sourceObject, eventName, listener )
  116. {
  117. sourceObject.attachEvent( 'on' + eventName, listener ) ;
  118. }
  119. FCKTools.RemoveEventListener = function( sourceObject, eventName, listener )
  120. {
  121. sourceObject.detachEvent( 'on' + eventName, listener ) ;
  122. }
  123. // Listeners attached with this function cannot be detached.
  124. FCKTools.AddEventListenerEx = function( sourceObject, eventName, listener, paramsArray )
  125. {
  126. // Ok... this is a closures party, but is the only way to make it clean of memory leaks.
  127. var o = new Object() ;
  128. o.Source = sourceObject ;
  129. o.Params = paramsArray || [] ; // Memory leak if we have DOM objects here.
  130. o.Listener = function( ev )
  131. {
  132. return listener.apply( o.Source, [ ev ].concat( o.Params ) ) ;
  133. }
  134. if ( FCK.IECleanup )
  135. FCK.IECleanup.AddItem( null, function() { o.Source = null ; o.Params = null ; } ) ;
  136. sourceObject.attachEvent( 'on' + eventName, o.Listener ) ;
  137. sourceObject = null ; // Memory leak cleaner (because of the above closure).
  138. paramsArray = null ; // Memory leak cleaner (because of the above closure).
  139. }
  140. // Returns and object with the "Width" and "Height" properties.
  141. FCKTools.GetViewPaneSize = function( win )
  142. {
  143. var oSizeSource ;
  144. var oDoc = win.document.documentElement ;
  145. if ( oDoc && oDoc.clientWidth ) // IE6 Strict Mode
  146. oSizeSource = oDoc ;
  147. else
  148. oSizeSource = win.document.body ; // Other IEs
  149. if ( oSizeSource )
  150. return { Width : oSizeSource.clientWidth, Height : oSizeSource.clientHeight } ;
  151. else
  152. return { Width : 0, Height : 0 } ;
  153. }
  154. FCKTools.SaveStyles = function( element )
  155. {
  156. var data = FCKTools.ProtectFormStyles( element ) ;
  157. var oSavedStyles = new Object() ;
  158. if ( element.className.length > 0 )
  159. {
  160. oSavedStyles.Class = element.className ;
  161. element.className = '' ;
  162. }
  163. var sInlineStyle = element.style.cssText ;
  164. if ( sInlineStyle.length > 0 )
  165. {
  166. oSavedStyles.Inline = sInlineStyle ;
  167. element.style.cssText = '' ;
  168. }
  169. FCKTools.RestoreFormStyles( element, data ) ;
  170. return oSavedStyles ;
  171. }
  172. FCKTools.RestoreStyles = function( element, savedStyles )
  173. {
  174. var data = FCKTools.ProtectFormStyles( element ) ;
  175. element.className = savedStyles.Class || '' ;
  176. element.style.cssText = savedStyles.Inline || '' ;
  177. FCKTools.RestoreFormStyles( element, data ) ;
  178. }
  179. FCKTools.RegisterDollarFunction = function( targetWindow )
  180. {
  181. targetWindow.$ = targetWindow.document.getElementById ;
  182. }
  183. FCKTools.AppendElement = function( target, elementName )
  184. {
  185. return target.appendChild( this.GetElementDocument( target ).createElement( elementName ) ) ;
  186. }
  187. // This function may be used by Regex replacements.
  188. FCKTools.ToLowerCase = function( strValue )
  189. {
  190. return strValue.toLowerCase() ;
  191. }