Ext.menu.Menu() :如何获取菜单的宽度(需要用偏移量显示)

发布于 2024-12-10 12:30:51 字数 846 浏览 1 评论 0原文

首先,我使用的是 ext-3.3.1

我使用 Ext.menu.Menu() 构建了一个上下文菜单,并用这样的项目填充它:

menu.addMenuItem({
    text : TaskGeneralBaseds[i].getAttribute("Name"),
    templateTypeID : templateTypeID,
    taskType : taskType,
    scope : this,
    listeners : {
           click : {
             fn : this.extAddTaskClicked
       }
    },      
    icon:g ? g : null
    });

然后我像这样显示菜单,

var left = window.event.clientX;
var top = window.event.clientY;

menu.showAt([left,top]);

现在的事情是我想显示它带有偏移量,就好像它是从右到左显示,而不是从左到右显示(我已经解决了所有其他 RTL 问题) 所以如果我有菜单的宽度我可以做这样的事情:

var menuWidth = menu.width;// how can i really get the width?
var left = window.event.clientX-menuWidth ;

var top = window.event.clientY;

menu.showAt([left,top]);

有什么想法吗?

先谢谢了!

丹尼尔.

First of all I'm using ext-3.3.1

I built a context menu using Ext.menu.Menu() and populated it with items like this:

menu.addMenuItem({
    text : TaskGeneralBaseds[i].getAttribute("Name"),
    templateTypeID : templateTypeID,
    taskType : taskType,
    scope : this,
    listeners : {
           click : {
             fn : this.extAddTaskClicked
       }
    },      
    icon:g ? g : null
    });

and than i display the menu like this

var left = window.event.clientX;
var top = window.event.clientY;

menu.showAt([left,top]);

now the thing is that i want to display it with offset as if it was displayed from right to left and not from left to right (I already took care of all the other RTL issues)
so if i had the width of the menu i could do something like this:

var menuWidth = menu.width;// how can i really get the width?
var left = window.event.clientX-menuWidth ;

var top = window.event.clientY;

menu.showAt([left,top]);

Any ideas?

Thanks ahead!

Daniel.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

可可 2024-12-17 12:30:51

显示菜单(这样它将被渲染),获取其宽度然后重新定位:

menu.showAt(0,0);    
var menuWidth = menu.width;// how can i really get the width?
var left = window.event.clientX-menuWidth ;
var top = window.event.clientY;
menu.setPosition(left,top);

或使用固定的配置宽度。

Show the menu (so it will be rendered), get its width and then relocate:

menu.showAt(0,0);    
var menuWidth = menu.width;// how can i really get the width?
var left = window.event.clientX-menuWidth ;
var top = window.event.clientY;
menu.setPosition(left,top);

Or use a fixed config width.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文