有没有办法让一个Dojo Dialog从PopupMenuItem弹出到左边?

时间:2012-06-06 06:34:39

标签: menu dojo dialog popup

我正在使用Dojo版本1.6.1。我正在构建一个菜单,其中有一个Dialog dijit作为PopupMenuItem的弹出窗口。但是,如果菜单停靠在应用程序的右侧,我需要弹出窗口显示在菜单的左侧。我似乎无法让这个工作。如果我使用其他类型的小部件(如ColorPalette),这可以正常工作。使用弹出子菜单和弹出式ColorPalette,如果菜单位于屏幕的右侧,则一切都向左打开,如果菜单位于屏幕的左侧,则一切都向右打开。 Dojo只是自动处理这个问题。但是对于任何Dialog小部件,即使是空的小部件,它总是弹出PopupMenuItem的右侧,无论屏幕上的菜单在哪里。我认为也许指定div的高度和宽度是dijit.Dialog会解决这个问题,但事实并非如此。

以下是代码的简化版本:

<div data-dojo-type="dijit.Menu" id="toolPalette" style="position:absolute; right:0; top:0; z-index: 999;">
</div>

<script>
    // Grab the div for the menu, declared in the HTML above.
    var toolPalette = dijit.byId("toolPalette");

    // This tool button has a popup
    var menuItem1 = new dijit.PopupMenuItem({
        id: "menuItem1",
        iconClass: "shelterIcon",
        popup: new dijit.Dialog()
    });
    toolPalette.addChild(menuItem1);

    // This tool button does not have a popup
    var menuItem2 = new dijit.MenuItem({
        id: "menuItem2",
        iconClass: "shelterIcon"
    });
    toolPalette.addChild(menuItem2);

    toolPalette.startup();
</script>

非常感谢任何帮助!我已经尝试了我能想到的一切。

1 个答案:

答案 0 :(得分:1)

查找当前光标位置的方法

document.onmouseup = getXY;
var mouseX, mouseY;

function getXY(e) {
    mouseX= (e || event).clientX;
    mouseY= (e || event).clientY;
    if (document.documentElement.scrollTop > 0) {
        mouseY= mouseY+ document.documentElement.scrollTop;
    }
}

您的代码在这里。

 var myDialog = new dijit.Dialog();
 var menuItem1 = new dijit.PopupMenuItem({
        id: "menuItem1",
        iconClass: "shelterIcon",
        popup: myDialog 
    });

现在将X和Y应用于对话框。

dijit.popup.open({
    x: mouseX,
    y : mouseY,
    popup: myDialog 
 });
相关问题