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