fckcontextmenu_gecko.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: fckcontextmenu_gecko.js
  12.  *  Context Menu operations. (Gecko specific implementations)
  13.  * 
  14.  * File Authors:
  15.  *  Frederico Caldeira Knabben (fredck@fckeditor.net)
  16.  */
  17. // The Context Menu CSS must be added to the parent document.
  18. FCKTools.AppendStyleSheet( window.parent.document, FCKConfig.SkinPath + 'fck_contextmenu.css' ) ;
  19. FCKContextMenu.Show = function( x, y )
  20. {
  21. if ( ! this._Document )
  22. {
  23. this._Document = window.parent.document ;
  24. }
  25. // Create the context menu if needed.
  26. if ( !this._IsLoaded ) 
  27. {
  28. this.Reload() ;
  29. this._Div.style.zIndex = 10000 ;
  30. this._Div.oncontextmenu = function() { return false ; }
  31. }
  32. this.RefreshState() ;
  33. // Get the editor area and editor frames positions.
  34. var oCoordsA = FCKTools.GetElementPosition( FCK.EditorWindow.frameElement ) ;
  35. var oCoordsB = FCKTools.GetElementPosition( window.frameElement ) ;
  36. x += oCoordsA.X + oCoordsB.X ;
  37. y += oCoordsA.Y + oCoordsB.Y ;
  38. // Verifies if the context menu is completely visible.
  39. var iXSpace = x + this._Div.offsetWidth - this._Div.ownerDocument.defaultView.innerWidth ;
  40. var iYSpace = y + this._Div.offsetHeight - this._Div.ownerDocument.defaultView.innerHeight ;
  41. if ( iXSpace > 0 ) x -= this._Div.offsetWidth ;
  42. if ( iYSpace > 0 ) y -= this._Div.offsetHeight ;
  43. // Set the context menu DIV in the specified location.
  44. this._Div.style.left = x + 'px' ;
  45. this._Div.style.top = y + 'px' ;
  46. // Watch the "OnClick" event for all windows to close the Context Menu.
  47. var oActualWindow = FCK.EditorWindow ;
  48. while ( oActualWindow )
  49. {
  50. oActualWindow.document.addEventListener( 'click', FCKContextMenu._OnDocumentClick, false ) ;
  51. if ( oActualWindow != oActualWindow.parent )
  52. oActualWindow = oActualWindow.parent ;
  53. else if ( oActualWindow.opener == null ) 
  54. oActualWindow = oActualWindow.opener ;
  55. else
  56. break ;
  57. }
  58. // Show it.
  59. this._Div.style.visibility = '' ;
  60. }
  61. FCKContextMenu._OnDocumentClick = function( event )
  62. {
  63. var e = event.target ;
  64. while ( e )
  65. {
  66. if ( e == FCKContextMenu._Div ) return ;
  67. e = e.parentNode ;
  68. }
  69. FCKContextMenu.Hide() ;
  70. }
  71. FCKContextMenu.Hide = function()
  72. {
  73. this._Div.style.visibility = 'hidden' ;
  74. this._Div.style.left = this._Div.style.top = '1px' ;
  75. }