我使用的是Dojo版本1.6.1。我正在构建一个菜单,其中有一个Dialog dijit作为来自PopupMenuItem的弹出窗口。这是有效的,但是,如果菜单停靠在应用程序的右侧,我需要弹出显示在菜单的左侧。我好像不能让它起作用。如果我使用另一种类型的小部件(如ColorPalette),则可以很好地工作。使用弹出式子菜单和弹出式ColorPalette,如果菜单在屏幕的右侧,则所有内容都会打开到左侧;如果菜单在屏幕的左侧,则所有内容都会打开到右侧。Dojo会自动处理这个问题。但是对于任何对话框小部件,即使是空的,它总是弹出到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>任何帮助都是非常感谢的!我已经试过我能想到的所有方法了。
发布于 2012-06-06 15:51:39
查找当前光标位置的方法
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
});https://stackoverflow.com/questions/10909245
复制相似问题