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

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_ie.js
  14.  *  Active selection functions. (IE specific implementation)
  15.  * 
  16.  * File Authors:
  17.  *  Frederico Caldeira Knabben (fredck@fckeditor.net)
  18.  */
  19. // Get the selection type.
  20. FCKSelection.GetType = function()
  21. {
  22. return FCK.EditorDocument.selection.type ;
  23. }
  24. // Retrieves the selected element (if any), just in the case that a single
  25. // element (object like and image or a table) is selected.
  26. FCKSelection.GetSelectedElement = function()
  27. {
  28. if ( this.GetType() == 'Control' )
  29. {
  30. var oRange = FCK.EditorDocument.selection.createRange() ;
  31. if ( oRange && oRange.item )
  32. return FCK.EditorDocument.selection.createRange().item(0) ;
  33. }
  34. }
  35. FCKSelection.GetParentElement = function()
  36. {
  37. switch ( this.GetType() )
  38. {
  39. case 'Control' :
  40. return FCKSelection.GetSelectedElement().parentElement ;
  41. case 'None' :
  42. return ;
  43. default :
  44. return FCK.EditorDocument.selection.createRange().parentElement() ;
  45. }
  46. }
  47. FCKSelection.SelectNode = function( node )
  48. {
  49. FCK.Focus() ;
  50. FCK.EditorDocument.selection.empty() ;
  51. try 
  52. {
  53. // Try to select the node as a control.
  54. var oRange = FCK.EditorDocument.body.createControlRange() ;
  55. oRange.addElement( node ) ;
  56. catch(e) 
  57. {
  58. // If failed, select it as a text range.
  59. var oRange = FCK.EditorDocument.selection.createRange() ;
  60. oRange.moveToElementText( node ) ;
  61. }
  62. oRange.select() ;
  63. }
  64. FCKSelection.Collapse = function( toStart )
  65. {
  66. FCK.Focus() ;
  67. if ( this.GetType() == 'Text' )
  68. {
  69. var oRange = FCK.EditorDocument.selection.createRange() ;
  70. oRange.collapse( toStart == null || toStart === true ) ;
  71. oRange.select() ;
  72. }
  73. }
  74. // The "nodeTagName" parameter must be Upper Instance.
  75. FCKSelection.HasAncestorNode = function( nodeTagName )
  76. {
  77. var oContainer ;
  78. if ( FCK.EditorDocument.selection.type == "Control" )
  79. {
  80. oContainer = this.GetSelectedElement() ;
  81. }
  82. else
  83. {
  84. var oRange  = FCK.EditorDocument.selection.createRange() ;
  85. oContainer = oRange.parentElement() ;
  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. if ( FCK.EditorDocument.selection.type == "Control" )
  99. {
  100. var oRange = FCK.EditorDocument.selection.createRange() ;
  101. for ( i = 0 ; i < oRange.length ; i++ )
  102. {
  103. if (oRange(i).parentNode)
  104. {
  105. oNode = oRange(i).parentNode ;
  106. break ;
  107. }
  108. }
  109. }
  110. else
  111. {
  112. var oRange  = FCK.EditorDocument.selection.createRange() ;
  113. oNode = oRange.parentElement() ;
  114. }
  115. while ( oNode && oNode.nodeName != nodeTagName )
  116. oNode = oNode.parentNode ;
  117. return oNode ;
  118. }
  119. FCKSelection.Delete = function()
  120. {
  121. // Gets the actual selection.
  122. var oSel = FCK.EditorDocument.selection ;
  123. // Deletes the actual selection contents.
  124. if ( oSel.type.toLowerCase() != "none" )
  125. {
  126. oSel.clear() ;
  127. }
  128. return oSel ;
  129. }