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

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: fckstyledef_gecko.js
  12.  *  FCKStyleDef Class: represents a single stylke definition. (Gecko specific)
  13.  * 
  14.  * File Authors:
  15.  *  Frederico Caldeira Knabben (fredck@fckeditor.net)
  16.  */
  17. FCKStyleDef.prototype.ApplyToSelection = function()
  18. {
  19. if ( FCKSelection.GetType() == 'Text' && !this.IsObjectElement )
  20. {
  21. var oSelection = FCK.EditorWindow.getSelection() ;
  22. // Create the main element.
  23. var e = FCK.EditorDocument.createElement( this.Element ) ;
  24. for ( var i = 0 ; i < oSelection.rangeCount ; i++ )
  25. {
  26. e.appendChild( oSelection.getRangeAt(i).extractContents() ) ;
  27. }
  28. // Set the attributes.
  29. this._AddAttributes( e ) ;
  30. // Remove the duplicated elements.
  31. this._RemoveDuplicates( e ) ;
  32. var oRange = oSelection.getRangeAt(0) ;
  33. oRange.insertNode( e ) ;
  34. }
  35. else
  36. {
  37. var oControl = FCKSelection.GetSelectedElement() ;
  38. if ( oControl.tagName == this.Element )
  39. this._AddAttributes( oControl ) ;
  40. }
  41. }
  42. FCKStyleDef.prototype._AddAttributes = function( targetElement )
  43. {
  44. for ( var a in this.Attributes )
  45. targetElement.setAttribute( a, this.Attributes[a], 0 ) ;
  46. }
  47. FCKStyleDef.prototype._RemoveDuplicates = function( parent )
  48. {
  49. for ( var i = 0 ; i < parent.childNodes.length ; i++ )
  50. {
  51. var oChild = parent.childNodes[i] ;
  52. if ( oChild.nodeType != 1 )
  53. continue ;
  54. this._RemoveDuplicates( oChild ) ;
  55. if ( this.IsEqual( oChild ) )
  56. FCKTools.RemoveOuterTags( oChild ) ;
  57. }
  58. }
  59. FCKStyleDef.prototype.IsEqual = function( e )
  60. {
  61. if ( e.tagName != this.Element )
  62. return false ;
  63. for ( var a in this.Attributes )
  64. {
  65. if ( e.getAttribute( a ) != this.Attributes[a] )
  66. return false ;
  67. }
  68. return true ;
  69. }
  70. FCKStyleDef.prototype._RemoveMe = function( elementToCheck )
  71. {
  72. if ( ! elementToCheck )
  73. return ;
  74. var oParent = elementToCheck.parentNode ;
  75. if ( elementToCheck.nodeType == 1 && this.IsEqual( elementToCheck ) )
  76. {
  77. if ( this.IsObjectElement )
  78. {
  79. for ( var a in this.Attributes )
  80. elementToCheck.removeAttribute( a, 0 ) ;
  81. return ;
  82. }
  83. else
  84. FCKTools.RemoveOuterTags( elementToCheck ) ;
  85. }
  86. this._RemoveMe( oParent ) ;
  87. }