2

Dojoバージョン1.6.1を使用しています。PopupMenuItemからのポップアップとしてDialogdijitを持つメニューを作成しています。これは機能しますが、メニューがアプリケーションの右側にドッキングされている場合は、メニューの左側にポップアップを表示する必要があります。これを機能させることができないようです。別のタイプのウィジェット(ColorPaletteなど)を使用する場合、これは正常に機能します。ポップアップサブメニューとポップアップColorPaletteを使用すると、メニューが画面の右側にある場合はすべてが左側に開き、メニューが画面の左側にある場合はすべてが右側に開きます。Dojoはこれを自動的に処理します。ただし、ダイアログウィジェットを使用すると、空のウィジェットであっても、メニューが画面上のどこにあるかに関係なく、常にPopupMenuItemの右側にポップアップ表示されます。おそらくdijitであるdivの高さと幅を指定すると思いました。

コードの簡略化されたバージョンは次のとおりです。

<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>

どんな助けでも大歓迎です!私は考えられるすべてを試しました。

4

1 に答える 1

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 
 });
于 2012-06-06T07:51:38.963 に答える