Bha*_*kar 4 javascript contextmenu right-click
我在javascript中为表格开发了右键单击上下文菜单。上下文菜单的位置在表格每一行的光标下方。表格的最后一行在页面的末尾,现在右键单击上下文的行菜单正在下降,但应该显示在光标上。
function ContextShow(event) {
event = event || window.event;
var m = getMousePosition(event);
var s = getScrollPosition(event);
var client_height = document.body.clientHeight;
var display_context = document.getElementById('context_menu');
if(replaceContext){
display_context.style.display = "block";
display_context.style.left = m.x + s.x + "px";
display_context.style.top = m.y + s.y + "px";
replaceContext = false;
}}
function getMousePosition (e){
e = e || window.event;
var position = {
'x' : e.clientX,
'y' : e.clientY
}
return position;}
function getScrollPosition(){
var x = 0;
var y = 0;
if( typeof( window.pageYOffset ) == 'number' ) {
x = window.pageXOffset;
y = window.pageYOffset;
} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
x = document.documentElement.scrollLeft;
y = document.documentElement.scrollTop;
} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
x = document.body.scrollLeft;
y = document.body.scrollTop;
}
var position = {
'x' : x,
'y' : y
}
return position;
Run Code Online (Sandbox Code Playgroud)
}
在这里,contextShow将使用getMousePosition(event)根据鼠标位置显示右键单击的上下文菜单;和getScrollPosition(event);
小智 5
我使用以下功能来设置上下文菜单的位置,它对我有用。
function setContextMenuPostion(event, contextMenu) {
var mousePosition = {};
var menuPostion = {};
var menuDimension = {};
menuDimension.x = contextMenu.outerWidth();
menuDimension.y = contextMenu.outerHeight();
mousePosition.x = event.pageX;
mousePosition.y = event.pageY;
if (mousePosition.x + menuDimension.x > $(window).width() + $(window).scrollLeft()) {
menuPostion.x = mousePosition.x - menuDimension.x;
} else {
menuPostion.x = mousePosition.x;
}
if (mousePosition.y + menuDimension.y > $(window).height() + $(window).scrollTop()) {
menuPostion.y = mousePosition.y - menuDimension.y;
} else {
menuPostion.y = mousePosition.y;
}
return menuPostion;
}
Run Code Online (Sandbox Code Playgroud)
小智 0
显示上下文菜单时,您应该检查鼠标光标是在屏幕的下半部分还是上半部分。如果是下半部分,您应该将其显示在光标的顶部,反之亦然。这可以应用于屏幕的右半部分和左半部分也是如此,因此您的菜单将根据您的光标所在的屏幕的四分之一而显示。如果您这样做,您可以确保无论您的光标在哪里,您的菜单始终可见。
例如:如果鼠标 x 坐标 > 屏幕高度/2 则在光标顶部显示菜单...
| 归档时间: |
|
| 查看次数: |
8672 次 |
| 最近记录: |