fckselection_gecko.js
上传用户:wlfwy2004
上传日期:2016-12-12
资源大小:33978k
文件大小:3k
源码类别:

Jsp/Servlet

开发平台:

Java

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