Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自定义上下文菜单赢得';不能在Mac上的Firefox中工作_Javascript_Jquery - Fatal编程技术网

Javascript 自定义上下文菜单赢得';不能在Mac上的Firefox中工作

Javascript 自定义上下文菜单赢得';不能在Mac上的Firefox中工作,javascript,jquery,Javascript,Jquery,我有这个自定义上下文菜单。除了Mac电脑上的Firefox,它在所有浏览器中都能完美运行 我已经创建了它,所以当用户右键单击时,原始菜单将被隐藏,然后,自定义菜单将被删除,如果它已经显示的话(因此,此时只显示一个菜单)。最后,将创建菜单 我还添加了另一个功能,这样,如果用户单击页面上的任何其他位置,菜单也将被删除 正如我所说:这只是Mac上Firefox的一个问题 这是我的代码: var contextmenu = $('<div class="contextmenu">'

我有这个自定义上下文菜单。除了Mac电脑上的Firefox,它在所有浏览器中都能完美运行

我已经创建了它,所以当用户右键单击时,原始菜单将被隐藏,然后,自定义菜单将被删除,如果它已经显示的话(因此,此时只显示一个菜单)。最后,将创建菜单

我还添加了另一个功能,这样,如果用户单击页面上的任何其他位置,菜单也将被删除

正如我所说:这只是Mac上Firefox的一个问题

这是我的代码:

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