(@_@;)我是程序猿,我编程,我快乐,知识改变命运,技术成就梦想   oh yeah!合作VX "w6668263" 联系Email:ye583025823@126.com

Extjs 右键菜单创建问题

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

    Ext.onReady(function () {
        var pan = Ext.create('Ext.window.Window', {
            width: 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', {
                                width: 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,
                                            width: 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', {
                                width: 100,
                                margin: '0 0 10 0',
                                floating:true,
                                renderTo: Ext.getBody(),

 

posted on 2012-12-03 10:17  一个草率的龙果果  阅读(335)  评论(0编辑  收藏  举报

导航