shortcutmenu.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. ///import core
  2. ///commands 弹出菜单
  3. // commandsName popupmenu
  4. ///commandsTitle 弹出菜单
  5. /**
  6. * 弹出菜单
  7. * @function
  8. * @name baidu.editor.plugins.popupmenu
  9. * @author xuheng
  10. */
  11. UE.plugins['shortcutmenu'] = function () {
  12. var me = this,
  13. menu,
  14. items = me.options.shortcutMenu || [];
  15. if (!items.length) {
  16. return;
  17. }
  18. me.addListener ('contextmenu mouseup' , function (type , e) {
  19. var me = this,
  20. customEvt = {
  21. type : type ,
  22. target : e.target || e.srcElement ,
  23. screenX : e.screenX ,
  24. screenY : e.screenY ,
  25. clientX : e.clientX ,
  26. clientY : e.clientY
  27. };
  28. setTimeout (function () {
  29. var rng = me.selection.getRange ();
  30. if (rng.collapsed === false || type == "contextmenu") {
  31. if (!menu) {
  32. menu = new baidu.editor.ui.ShortCutMenu ({
  33. editor : me ,
  34. items : items ,
  35. theme : me.options.theme ,
  36. className : 'edui-shortcutmenu'
  37. });
  38. menu.render ();
  39. me.fireEvent ("afterrendershortcutmenu" , menu);
  40. }
  41. menu.show (customEvt , !!UE.plugins['contextmenu']);
  42. }
  43. });
  44. if (type == 'contextmenu') {
  45. domUtils.preventDefault (e);
  46. if (browser.ie9below) {
  47. var ieRange;
  48. try {
  49. ieRange = me.selection.getNative().createRange();
  50. } catch (e) {
  51. return;
  52. }
  53. if (ieRange.item) {
  54. var range = new dom.Range (me.document);
  55. range.selectNode (ieRange.item (0)).select (true , true);
  56. }
  57. }
  58. }
  59. });
  60. me.addListener ('keydown' , function (type) {
  61. if (type == "keydown") {
  62. menu && !menu.isHidden && menu.hide ();
  63. }
  64. });
  65. };