Ich weiß, dass das auch ziemlich alt ist. Vor kurzem musste ich ein Kontextmenü erstellen, das ich in andere Sites einfüge, die je nach angeklicktem Element andere Eigenschaften haben.
Es ist ziemlich rau und es gibt wahrscheinlich bessere Möglichkeiten, dies zu erreichen. Es verwendet das jQuery-Kontextmenü Bibliothek hier
Ich habe es genossen, es zu kreieren und obwohl ihr vielleicht etwas davon habt.
Hier ist die Geige . Ich hoffe, dass es hoffentlich jemandem da draußen helfen kann.
$(function() {
function createSomeMenu() {
var all_array = '{';
var x = event.clientX,
y = event.clientY,
elementMouseIsOver = document.elementFromPoint(x, y);
if (elementMouseIsOver.closest('a')) {
all_array += '"Link-Fold": {"name": "Link", "icon": "fa-external-link", "items": {"fold2-key1": {"name": "Open Site in New Tab"}, "fold2-key2": {"name": "Open Site in Split Tab"}, "fold2-key3": {"name": "Copy URL"}}},';
}
if (elementMouseIsOver.closest('img')) {
all_array += '"Image-Fold": {"name": "Image","icon": "fa-picture-o","items": {"fold1-key1": {"name":"Download Image"},"fold1-key2": {"name": "Copy Image Location"},"fold1-key3": {"name": "Go To Image"}}},';
}
all_array += '"copy": {"name": "Copy","icon": "copy"},"paste": {"name": "Paste","icon": "paste"},"edit": {"name": "Edit HTML","icon": "fa-code"}}';
return JSON.parse(all_array);
}
// setup context menu
$.contextMenu({
selector: 'body',
build: function($trigger, e) {
return {
callback: function(key, options) {
var m = "clicked: " + key;
console.log(m);
},
items: createSomeMenu()
};
}
});
});