fckxhtml_gecko.js
上传用户:dbstep
上传日期:2022-08-06
资源大小:2803k
文件大小:3k
源码类别:

WEB源码(ASP,PHP,...)

开发平台:

ASP/ASPX

  1. /*
  2.  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
  3.  * Copyright (C) 2003-2009 Frederico Caldeira Knabben
  4.  *
  5.  * == BEGIN LICENSE ==
  6.  *
  7.  * Licensed under the terms of any of the following licenses at your
  8.  * choice:
  9.  *
  10.  *  - GNU General Public License Version 2 or later (the "GPL")
  11.  *    http://www.gnu.org/licenses/gpl.html
  12.  *
  13.  *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
  14.  *    http://www.gnu.org/licenses/lgpl.html
  15.  *
  16.  *  - Mozilla Public License Version 1.1 or later (the "MPL")
  17.  *    http://www.mozilla.org/MPL/MPL-1.1.html
  18.  *
  19.  * == END LICENSE ==
  20.  *
  21.  * Defines the FCKXHtml object, responsible for the XHTML operations.
  22.  * Gecko specific.
  23.  */
  24. FCKXHtml._GetMainXmlString = function()
  25. {
  26. return ( new XMLSerializer() ).serializeToString( this.MainNode ) ;
  27. }
  28. FCKXHtml._AppendAttributes = function( xmlNode, htmlNode, node )
  29. {
  30. var aAttributes = htmlNode.attributes ;
  31. for ( var n = 0 ; n < aAttributes.length ; n++ )
  32. {
  33. var oAttribute = aAttributes[n] ;
  34. if ( oAttribute.specified )
  35. {
  36. var sAttName = oAttribute.nodeName.toLowerCase() ;
  37. var sAttValue ;
  38. // Ignore any attribute starting with "_fck".
  39. if ( sAttName.StartsWith( '_fck' ) )
  40. continue ;
  41. // There is a bug in Mozilla that returns '_moz_xxx' attributes as specified.
  42. else if ( sAttName.indexOf( '_moz' ) == 0 )
  43. continue ;
  44. // There are one cases (on Gecko) when the oAttribute.nodeValue must be used:
  45. // - for the "class" attribute
  46. else if ( sAttName == 'class' )
  47. {
  48. sAttValue = oAttribute.nodeValue.replace( FCKRegexLib.FCK_Class, '' ) ;
  49. if ( sAttValue.length == 0 )
  50. continue ;
  51. }
  52. // XHTML doens't support attribute minimization like "CHECKED". It must be transformed to checked="checked".
  53. else if ( oAttribute.nodeValue === true )
  54. sAttValue = sAttName ;
  55. else
  56. sAttValue = htmlNode.getAttribute( sAttName, 2 ) ; // We must use getAttribute to get it exactly as it is defined.
  57. this._AppendAttribute( node, sAttName, sAttValue ) ;
  58. }
  59. }
  60. }
  61. if ( FCKBrowserInfo.IsOpera )
  62. {
  63. // Opera moves the <FCK:meta> element outside head (#1166).
  64. // Save a reference to the XML <head> node, so we can use it for
  65. // orphan <meta>s.
  66. FCKXHtml.TagProcessors['head'] = function( node, htmlNode )
  67. {
  68. FCKXHtml.XML._HeadElement = node ;
  69. node = FCKXHtml._AppendChildNodes( node, htmlNode, true ) ;
  70. return node ;
  71. }
  72. // Check whether a <meta> element is outside <head>, and move it to the
  73. // proper place.
  74. FCKXHtml.TagProcessors['meta'] = function( node, htmlNode, xmlNode )
  75. {
  76. if ( htmlNode.parentNode.nodeName.toLowerCase() != 'head' )
  77. {
  78. var headElement = FCKXHtml.XML._HeadElement ;
  79. if ( headElement && xmlNode != headElement )
  80. {
  81. delete htmlNode._fckxhtmljob ;
  82. FCKXHtml._AppendNode( headElement, htmlNode ) ;
  83. return null ;
  84. }
  85. }
  86. return node ;
  87. }
  88. }
  89. if ( FCKBrowserInfo.IsGecko )
  90. {
  91. // #2162, some Firefox extensions might add references to internal links
  92. FCKXHtml.TagProcessors['link'] = function( node, htmlNode )
  93. {
  94. if ( htmlNode.href.substr(0, 9).toLowerCase() == 'chrome://' )
  95. return false ;
  96. return node ;
  97. }
  98. }