我正在尝试编写一个网络应用程序,用我自己的自定义菜单替换上下文菜单(右键菜单)。我想要这样当用户点击表格行时,他们会得到一个特定的上下文菜单,而当他们点击页面的背景时,他们会得到一个不同的菜单。
我已经编写了菜单并让它们正常工作。当试图弄清楚如何让背景的菜单仅在单击背景时显示以及如何让表格行的菜单在单击时显示时,问题就出现了。
我尝试使用document.body.oncontextmenu
主体并oncontextmenu
为每个表格行设置功能,但主体的oncontextmenu
功能会覆盖行,所以我得到错误的菜单。如果我停止使用正文的菜单,表格行的菜单就可以工作,所以这不是问题。
我可能使用了错误的事件,那么只有背景(而不是背景顶部的元素)是否有不同的事件?或者一种“优先级”事件的方法,以便表格行的功能优先?
这是代码的样子:
var tableMenu;
var bodyMenu;
window.onload = function()
{
bodyMenu = new rightClickMenu("bodyMenu");
document.body.oncontextmenu = function() { bodyMenu.show(); tableMenu.hide(); }
bodyMenu.add("Add Entry", function()
{
alert("ADD");
});
tableMenu = new rightClickMenu("tableMenu", "tblSims");
simRows = getElementsByClassName("trSimRow");
for (var i in simRows)
simRows[i].oncontextmenu = function() { tableMenu.show(this.id.substring(2)); bodyMenu.hide(); }
tableMenu.add("Delete Entry", function(mac)
{
alert("DELETE");
});
document.body.onclick = function()
{
bodyMenu.hide();
tableMenu.hide();
};
}