fckselection_gecko.js
上传用户:li2971742
上传日期:2021-11-18
资源大小:39096k
文件大小:4k
源码类别:

OA系统

开发平台:

C#

  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: fckselection_gecko.js
  14.  *  Active selection functions. (Gecko specific implementation)
  15.  * 
  16.  * File Authors:
  17.  *  Frederico Caldeira Knabben (fredck@fckeditor.net)
  18.  */
  19. // Get the selection type (like document.select.type in IE).
  20. FCKSelection.GetType = function()
  21. {
  22. // if ( ! this._Type )
  23. // {
  24. // By default set the type to "Text".
  25. this._Type = 'Text' ;
  26. // Check if the actual selection is a Control (IMG, TABLE, HR, etc...).
  27. var oSel ;
  28. try { oSel = FCK.EditorWindow.getSelection() ; }
  29. catch (e) {}
  30. if ( oSel && oSel.rangeCount == 1 )
  31. {
  32. var oRange = oSel.getRangeAt(0) ;
  33. if ( oRange.startContainer == oRange.endContainer && (oRange.endOffset - oRange.startOffset) == 1 && oRange.startContainer.nodeType != Node.TEXT_NODE )
  34. this._Type = 'Control' ;
  35. }
  36. // }
  37. return this._Type ;
  38. }
  39. // Retrieves the selected element (if any), just in the case that a single
  40. // element (object like and image or a table) is selected.
  41. FCKSelection.GetSelectedElement = function()
  42. {
  43. if ( this.GetType() == 'Control' )
  44. {
  45. var oSel = FCK.EditorWindow.getSelection() ;
  46. return oSel.anchorNode.childNodes[ oSel.anchorOffset ] ;
  47. }
  48. }
  49. FCKSelection.GetParentElement = function()
  50. {
  51. if ( this.GetType() == 'Control' )
  52. return FCKSelection.GetSelectedElement().parentNode ;
  53. else
  54. {
  55. var oSel = FCK.EditorWindow.getSelection() ;
  56. if ( oSel )
  57. {
  58. var oNode = oSel.anchorNode ;
  59. while ( oNode && oNode.nodeType != 1 )
  60. oNode = oNode.parentNode ;
  61. return oNode ;
  62. }
  63. }
  64. }
  65. FCKSelection.SelectNode = function( element )
  66. {
  67. // FCK.Focus() ;
  68. var oRange = FCK.EditorDocument.createRange() ;
  69. oRange.selectNode( element ) ;
  70. var oSel = FCK.EditorWindow.getSelection() ;
  71. oSel.removeAllRanges() ;
  72. oSel.addRange( oRange ) ;
  73. }
  74. FCKSelection.Collapse = function( toStart )
  75. {
  76. var oSel = FCK.EditorWindow.getSelection() ;
  77. if ( toStart == null || toStart === true )
  78. oSel.collapseToStart() ;
  79. else
  80. oSel.collapseToEnd() ;
  81. }
  82. // The "nodeTagName" parameter must be Upper Instance.
  83. FCKSelection.HasAncestorNode = function( nodeTagName )
  84. {
  85. var oContainer = this.GetSelectedElement() ;
  86. if ( ! oContainer && FCK.EditorWindow )
  87. {
  88. try { oContainer = FCK.EditorWindow.getSelection().getRangeAt(0).startContainer ; }
  89. catch(e){}
  90. }
  91. while ( oContainer )
  92. {
  93. if ( oContainer.nodeType == 1 && oContainer.tagName == nodeTagName ) return true ;
  94. oContainer = oContainer.parentNode ;
  95. }
  96. return false ;
  97. }
  98. // The "nodeTagName" parameter must be Upper Instance.
  99. FCKSelection.MoveToAncestorNode = function( nodeTagName )
  100. {
  101. var oNode ;
  102. var oContainer = this.GetSelectedElement() ;
  103. if ( ! oContainer )
  104. oContainer = FCK.EditorWindow.getSelection().getRangeAt(0).startContainer ;
  105. while ( oContainer )
  106. {
  107. if ( oContainer.tagName == nodeTagName ) 
  108. return oContainer ;
  109. oContainer = oContainer.parentNode ;
  110. }
  111. return null ;
  112. }
  113. FCKSelection.Delete = function()
  114. {
  115. // Gets the actual selection.
  116. var oSel = FCK.EditorWindow.getSelection() ;
  117. // Deletes the actual selection contents.
  118. for ( var i = 0 ; i < oSel.rangeCount ; i++ )
  119. {
  120. oSel.getRangeAt(i).deleteContents() ;
  121. }
  122. return oSel ;
  123. }