Javascript 自定义上下文菜单赢得';不能在Mac上的Firefox中工作
我有这个自定义上下文菜单。除了Mac电脑上的Firefox,它在所有浏览器中都能完美运行 我已经创建了它,所以当用户右键单击时,原始菜单将被隐藏,然后,自定义菜单将被删除,如果它已经显示的话(因此,此时只显示一个菜单)。最后,将创建菜单 我还添加了另一个功能,这样,如果用户单击页面上的任何其他位置,菜单也将被删除 正如我所说:这只是Mac上Firefox的一个问题 这是我的代码:Javascript 自定义上下文菜单赢得';不能在Mac上的Firefox中工作,javascript,jquery,Javascript,Jquery,我有这个自定义上下文菜单。除了Mac电脑上的Firefox,它在所有浏览器中都能完美运行 我已经创建了它,所以当用户右键单击时,原始菜单将被隐藏,然后,自定义菜单将被删除,如果它已经显示的话(因此,此时只显示一个菜单)。最后,将创建菜单 我还添加了另一个功能,这样,如果用户单击页面上的任何其他位置,菜单也将被删除 正如我所说:这只是Mac上Firefox的一个问题 这是我的代码: var contextmenu = $('<div class="contextmenu">'
var contextmenu = $('<div class="contextmenu">'
+ '<span class="row">First Row</span>'
+ '<span class="row">Second Row</span>'
+ '<span class="row">Third Row</span>'
+ '<span class="row about">Fourth Row</span>'
+'</div>');
// Show Contentmenu if user right-click anywhere
$(document).bind("contextmenu", function(event) {
event.preventDefault();
$('.contextmenu').remove();
contextmenu.appendTo("body").css({
top: event.pageY,
left: event.pageX
});
});
// Hide Contentmenu if user click anywhere
$(document).click(function() {
$('.contextmenu').remove();
});
var contextmenu=$(“”
+“第一排”
+“第二排”
+“第三排”
+“第四排”
+'');
//如果用户右键单击任意位置,则显示内容菜单
$(文档).bind(“上下文菜单”,函数(事件){
event.preventDefault();
$('.contextmenu').remove();
contextmenu.appendTo(“body”).css({
顶部:event.pageY,
左:event.pageX
});
});
//如果用户单击任意位置,则隐藏内容菜单
$(文档)。单击(函数(){
$('.contextmenu').remove();
});
我也尝试过使用
$(document).bind(“contextmenu”,function(){…})代码>而不是$(文档)。单击(函数(){…})代码>但这里没有区别
我真的不明白为什么这在Mac上的Firefox上不起作用,而在Windows上的Firefox和所有其他浏览器上都很好
我希望你在Mac上的Firefox问题与我在Linux上使用Firefox时遇到的Firefox问题相同
这段代码:
$(document).click(function() {
$('.contextmenu').remove();
});
实际上是在显示contextmenu之后隐藏它,所有这些都在同一次单击中。Ubuntu中的我的上下文菜单出现在鼠标右键单击鼠标下键上,而不是像Windows上的一样单击鼠标下键,因此自定义上下文菜单正在创建,一旦鼠标按钮被释放并稍微移动,它就会立即被隐藏
修改它,使contextmenu在MouseDown上隐藏,解决了我在Firefox上的问题:
$(document).mousedown(function() {
$('.contextmenu').remove();
});
希望这也能解决Mac上Firefox的问题。这对我很有效:
$(document).on("mousedown", function(event){
if (!$(event.target).closest(".context-menu").length)
cmenu.hide();
});
它在Firefox中对我有效。似乎,它是Mac上的Firefox,但它不起作用。它现在工作得更好了。但我还有一个问题。现在我不能点击菜单上的任何一行,没有菜单消失。因此,如何避免菜单消失,如果单击发生在contextmenu中,它会自行修复?通过在函数中添加if(!$(evt.target).is('.contextmenu.row'){$('.contextmenu').remove();}
,将其修复。非常感谢D