zoukankan      html  css  js  c++  java
  • Extjs 右键菜单创建问题

    最近用ext js 创建一个右键菜单效果,我在xtype=pannel上面测试成功

        Ext.onReady(function () {
            var pan = Ext.create('Ext.window.Window', {
                 800,
                title: '我的面板',
                renderTo: Ext.getBody(),
                items: [{ xtype: 'image',
                    id: 'img_01',
                    src: 'http://www.j01.cc/Content/images/xihongshi.jpg',
                    listeners: {
                        afterrender: function (cmp, eOpts) {
                            /*右键菜单*/
                            var MyImg = Ext.getDom("img_01");
                            //Mozilla系列中需要使用 addEventListener
                            if (MyImg.addEventListener) {
                                // MyImg.addEventListener("contextmenu", CreateMenu, false);
                                MyImg.oncontextmenu = function (e) {
                                    return CreateMenu(e);
                                }
                            } else {
                                //if(MyImg.attachEvent) 
                                MyImg.attachEvent("oncontextmenu", CreateMenu)
                            }
                            function CreateMenu(e) {
                                var x = e.clientX - 5;
                                var y = e.clientY - 5;
                                if (this.menu) {
                                    this.menu.destroy();
                                };
                                this.menu = Ext.create('Ext.menu.Menu', {
                                     100,
                                    margin: '0 0 10 0',
                                    floating: false,
                                    renderTo: Ext.getBody(),
                                    listeners: {
                                        hide: function () {
                                        },
                                        mouseleave: function (menu, e, eOpts) {
                                            menu.destroy();
                                        }
                                    },
                                    items: [{
                                        text: '修改图片',
                                        handler: function () {
                                            alert("修改图片");
                                        }
                                    }, {
                                        text: '预览图片',
                                        handler: function () {
                                            Ext.create('Ext.window.Window', {
                                                title: '预览图片',
                                                layout: 'fit',
                                                x: x,
                                                y: y,
                                                 MyImg.width,
                                                height: MyImg.height,
                                                modal: true,
                                                items: [{
                                                    xtype: 'image',
                                                    src: MyImg.src,
                                                    border: false
                                                }]
                                            }).show();
                                        }
                                    }]
                                });
                                this.menu.showAt(x, y);
    
                                return false;
                            }
                        }
                    }
                }]
            }).show();
        });

    都能在panel上面看到效果。但是如果是在window上面创建menu却被压在了window的后面显示。

    解决办法

    floating:false改成floating:true就可以了跟以前一样用了

     

    this.menu = Ext.create('Ext.menu.Menu', {
                                     100,
                                    margin: '0 0 10 0',
                                    floating:true,
                                    renderTo: Ext.getBody(),

     

    如果这篇文章对您有帮助,您可以打赏我

    技术交流QQ群:15129679

  • 相关阅读:
    vue Syntax Error: Unexpected token {
    MQ 分拆Json数据包然后上传
    京东商城投诉商家
    C# 读写Txt文件
    DB2时间函数 实现 时间加减
    VS恢复默认设置
    只用一次循环开销 将类似 1 A 、1 B 的数据返回成为 1 A,B 的拼接形式
    DB2 With语句递归
    属性与字段的区别
    With语句在数据统计应用
  • 原文地址:https://www.cnblogs.com/yeminglong/p/2799133.html
Copyright © 2011-2022 走看看