Javascript 调用oncontextmenu时未定义firefox浏览器的事件
我在页面中右键单击按钮时显示上下文菜单。用于显示上下文菜单的代码为Javascript 调用oncontextmenu时未定义firefox浏览器的事件,javascript,firefox,contextmenu,Javascript,Firefox,Contextmenu,我在页面中右键单击按钮时显示上下文菜单。用于显示上下文菜单的代码为 window.addEventListener('contextmenu',function (e){e.preventDefault();},false);} 当我右键单击按钮时,上下文菜单方法名为 displaycontextmenu(obj,event) { console.log("Context"); console.log(event); // Displaying contex
window.addEventListener('contextmenu',function (e){e.preventDefault();},false);}
当我右键单击按钮时,上下文菜单方法名为
displaycontextmenu(obj,event)
{
console.log("Context");
console.log(event);
// Displaying context menu
}
代码在IE浏览器中执行得很好,即使在chrome中,我也能在控制台中看到“上下文””和事件被打印出来。但在firefox中,它打印为“上下文”和未定义。
我真的很困惑,在这里看到的事件是未定义的
我正在使用事件获取x和y坐标,以便在正确的位置显示关联菜单。由于事件未定义,我无法继续进行。您可以在chrome和IE的控制台中看到
事件
的原因是IE总是有将事件对象分配给全局引用(window.event
)的坏习惯Chrome已经正确地实现了W3C模型,并按照您的预期将事件对象传递给处理程序,但也保留了对该事件对象的全局引用,以防万一 尝试记录
obj
,它将在FF中记录事件对象。。。我对此相当有信心。Chrome的行为方式也完全相同:事件对象将传递给处理程序
由于未定义事件
参数,因此我只能假设事件
要么被忽略(被视为保留关键字,但只是安静地),要么正在进行一些后台范围扫描,将本地事件
解析为全局[窗口]事件
无论如何,使用可能是关键字或已经存在的变量名(如文档
、窗口
或此
)是不允许或不赞成的。这就是为什么你会经常看到:
function eventHandler (e)
{
e = e || event;
}
e
被允许作为varname,并且没有名称冲突,除非我们自己创建一个。如果处理程序没有收到事件对象,我们将引用event
,由于作用域扫描,它将解析为window.event
您可以在chrome和IE的控制台中看到事件的原因是IE总是有将事件对象分配给全局引用(window.event
)的坏习惯
Chrome已经正确地实现了W3C模型,并按照您的预期将事件对象传递给处理程序,但也保留了对该事件对象的全局引用,以防万一
尝试记录obj
,它将在FF中记录事件对象。。。我对此相当有信心。Chrome的行为方式也完全相同:事件对象将传递给处理程序
由于未定义事件
参数,因此我只能假设事件
要么被忽略(被视为保留关键字,但只是安静地),要么正在进行一些后台范围扫描,将本地事件
解析为全局[窗口]事件
无论如何,使用可能是关键字或已经存在的变量名(如文档
、窗口
或此
)是不允许或不赞成的。这就是为什么你会经常看到:
function eventHandler (e)
{
e = e || event;
}
e
被允许作为varname,并且没有名称冲突,除非我们自己创建一个。如果处理程序没有收到事件对象,我们将引用event
,由于作用域扫描,它将解析为window.event
将displaycontextmenu(事件)
处理程序附加到窗口的contextmenu事件侦听器的位置?将displaycontextmenu(事件)
处理程序附加到窗口的contextmenu事件侦听器的位置?