fckstyledef_ie.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: fckstyledef_ie.js
  12.  *  FCKStyleDef Class: represents a single stylke definition. (IE specific)
  13.  * 
  14.  * File Authors:
  15.  *  Frederico Caldeira Knabben (fredck@fckeditor.net)
  16.  */
  17. FCKStyleDef.prototype.ApplyToSelection = function()
  18. {
  19. var oSelection = FCK.EditorDocument.selection ;
  20. if ( oSelection.type == 'Text' )
  21. {
  22. var oRange = oSelection.createRange() ;
  23. // Create the main element.
  24. var e = document.createElement( this.Element ) ;
  25. e.innerHTML = oRange.htmlText ;
  26. // Set the attributes.
  27. this._AddAttributes( e ) ;
  28. // Remove the duplicated elements.
  29. this._RemoveDuplicates( e ) ;
  30. // Replace the selection with the resulting HTML.
  31. oRange.pasteHTML( e.outerHTML ) ;
  32. }
  33. else if ( oSelection.type == 'Control' )
  34. {
  35. var oControl = FCKSelection.GetSelectedElement() ;
  36. if ( oControl.tagName == this.Element )
  37. this._AddAttributes( oControl ) ;
  38. }
  39. }
  40. FCKStyleDef.prototype._AddAttributes = function( targetElement )
  41. {
  42. for ( var a in this.Attributes )
  43. {
  44. if ( a.toLowerCase() == 'style' )
  45. targetElement.style.cssText = this.Attributes[a] ;
  46. else
  47. targetElement.setAttribute( a, this.Attributes[a], 0 ) ;
  48. }
  49. }
  50. FCKStyleDef.prototype._RemoveDuplicates = function( parent )
  51. {
  52. for ( var i = 0 ; i < parent.children.length ; i++ )
  53. {
  54. var oChild = parent.children[i] ;
  55. this._RemoveDuplicates( oChild ) ;
  56. if ( this.IsEqual( oChild ) )
  57. {
  58. oChild.insertAdjacentHTML( 'beforeBegin', oChild.innerHTML ) ;
  59. oChild.parentElement.removeChild( oChild ) ;
  60. }
  61. }
  62. }
  63. FCKStyleDef.prototype.IsEqual = function( e )
  64. {
  65. if ( e.tagName != this.Element )
  66. return false ;
  67. for ( var a in this.Attributes )
  68. {
  69. switch ( a.toLowerCase() )
  70. {
  71. case 'style' :
  72. if ( e.style.cssText.toLowerCase() != this.Attributes[a].toLowerCase() )
  73. return false ;
  74. break ;
  75. case 'class' :
  76. if ( e.getAttribute( 'className', 0 ) != this.Attributes[a] )
  77. return false ;
  78. break ;
  79. default :
  80. if ( e.getAttribute( a, 0 ) != this.Attributes[a] )
  81. return false ;
  82. }
  83. }
  84. return true ;
  85. }
  86. FCKStyleDef.prototype._RemoveMe = function( elementToCheck )
  87. {
  88. if ( ! elementToCheck )
  89. return ;
  90. var oParent = elementToCheck.parentElement ;
  91. if ( this.IsEqual( elementToCheck ) )
  92. {
  93. if ( this.IsObjectElement )
  94. {
  95. for ( var a in this.Attributes )
  96. {
  97. switch ( a.toLowerCase() )
  98. {
  99. case 'class' :
  100. elementToCheck.removeAttribute( 'className', 0 ) ;
  101. break ;
  102. default :
  103. elementToCheck.removeAttribute( a, 0 ) ;
  104. }
  105. }
  106. return ;
  107. }
  108. else
  109. FCKTools.RemoveOuterTags( elementToCheck ) ;
  110. }
  111. this._RemoveMe( oParent ) ;
  112. }