コンテキストメニュー(右クリックメニュー)を自分でカスタマイズしたものに置き換えるWebアプリを作成しようとしています。ユーザーがテーブルの行をクリックすると、特定のコンテキストメニューが表示され、ページの背景をクリックすると、別のコンテキストメニューが表示されるようにしたいと思います。
私はすでにメニューを書き、それらを機能させました。問題は、背景をクリックしたときにのみ背景のメニューを表示する方法と、それがクリックされたときにテーブル行のメニューを表示する方法を理解しようとするときに発生します。
本文にを使用して各テーブル行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();
};
}