调用 oncontextmenu 时 Firefox 浏览器的事件未定义

2024-03-12

我在右键单击页面中的按钮时显示上下文菜单。用于显示上下文菜单的代码是

window.addEventListener('contextmenu',function (e){e.preventDefault();},false);}

当我右键单击按钮时,调用的上下文菜单方法是

displaycontextmenu(obj,event)
{
      console.log("Context");
      console.log(event);
      // Displaying context menu
}

该代码在 IE 浏览器中执行良好,即使在 chrome 中我也可以在控制台中看到“Context" 并且事件被打印。但在 Firefox 中,它打印为 "Context" and 不明确的。 看到这里事件未定义,我真的很困惑。

我正在使用该事件获取 x 和 y 坐标,以在正确的位置显示上下文菜单。由于事件未定义,我无法进一步进行。


你能看到的原因event在chrome和IE的控制台中出现的一个问题是,IE一直有将事件对象分配给全局引用的坏习惯(window.event).
Chrome 已经正确实现了 W3C 模型,并按照您的预期将事件对象传递给处理程序,但是also准备好对该事件对象的全局引用,以防万一。

尝试记录obj,它将在 FF 中记录事件对象...我对此相当有信心。 Chrome 也会以完全相同的方式运行:事件对象将被传递给处理程序。

自从event参数未定义,我只能假设event要么被忽略(被视为保留关键字,但只是悄悄地),要么正在进行一些幕后范围扫描来解决local event to the global [window.]event.

无论如何,使用可能是关键字或已经存在的变量名(例如document, window or this)要么是不允许的,要么是不被允许的。这就是为什么你会经常看到这样的情况:

function eventHandler (e)
{
    e = e || event;
}

e允许作为变量名,并且不存在名称冲突,除非我们自己创建一个。如果处理程序没有收到事件对象,我们引用event由于范围扫描,将解决window.event.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

调用 oncontextmenu 时 Firefox 浏览器的事件未定义 的相关文章

随机推荐

  • Selenium ChromeDriverManager 不下载最新版本的 ChromeDriver

    我有一个错误 E selenium common exceptions SessionNotCreatedException Message session not created This version of ChromeDriver
  • 如何从 Angular 中的子路由组件访问父组件属性?

    我是 Angular 的新手 我被困在那里 我知道如何通过将 parentData var 注入子选择器 来在父组件和子组件之间共享数据 但是当使用路由时 我只有一个路由器出口 无法将 parentData 绑定到它 因为它会引发错误 从子
  • 如何将 NSURLSessionConfiguration 配置到 NSObject 类中?

    我想得到服务器响应NSObject当我收到响应时 它已返回到 viewController as 我在服务器调用上实现NSObject上课然后我打电话给NSObject方法但在服务器响应之前我的NSString已返回为null NSObje
  • Python 中的非二叉树数据结构

    有谁知道我如何重新创建这个 最终目标是遍历树并计算每个端点 在这种情况下3因为1 3 2都是端点 如果您不想使用简单的列表 您可以构建一个基本类 就像是 class NonBinTree def init self val self val
  • 如何在 Fragment 中使用 MediaPlayer 到 SurfaceView

    因为我希望能够传递播放视频的 MediaPlayer 所以我想在播放视频的片段中使用 SurfaceView 而不是 VideoView 我看了一个先前的问题 https stackoverflow com questions 167005
  • 操作处理程序不适用于视图本身

    操作处理程序不能直接在视图实例上工作吗 我想将其直接附加到整个视图本身 而不是在视图中附加操作处理程序 示例 jsFiddle http jsfiddle net t3wdG http jsfiddle net t3wdG UPDATE 我
  • from 子句中的 JPA 子查询

    我们正在开发一个使用 EJB 连接到数据库的 Web 应用程序 在我们的数据库模型中 我们有一个移动设备表 另一个具有功能的表 最后一个将功能值与手机型号进行映射 模型 id model 特征 id feature model featur
  • 从cfscript中的coldfusion newQuery()获取结果元数据

    关于 CFscript 的文档在文档中有点稀疏 并且搜索 cfscript 特定答案会在 CF 标签答案中丢失 所以这是我的问题 如何从使用脚本执行的查询中获取结果元数据 使用我可以添加的标签result myNamedResultVar
  • 如何在 Swift 中迭代对象数组?

    我有物体 var person1 Person person1 name Joe person1 lastName Doe person1 age 21 var person2 Person person2 name Julia perso
  • 像文字处理器一样格式化文本的 iPhone 应用程序

    很抱歉提出这样的一般性问题 但我想知道是否 以及如何 可以编写一个 iPhone 应用程序 在不同页面上格式化 txt 文件 就像 Microsoft Word 在布局模式下打开一个新文档时所做的那样 并且粘贴一个txt文件 换句话说 我不
  • 如何重新加载当前页面?

    我有一个用于编辑用户的页面 里面有一些子组件 每个子组件都可以更改其父组件或对其父组件产生一些影响 因此 我没有向父级发出更改并更新某些字段 而是使用 重新加载 当前页面 private route ActivatedRoute reloa
  • android:minHeight 在 web 视图中不起作用

    我有以下 xml 文件
  • 使用 loadData 在 UIWebView 中显示 PDF

    我正在尝试显示本地存储在 UIWebView 中的 PDF 这就是我目前尝试执行此操作的方式 if NSFileManager defaultManager fileExistsAtPath self url LOG ERROR Could
  • 如何返回 JsonResult [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在编写这个 AJAX 方法时遇到问题 我想返回一个JsonResult 似乎是合乎逻辑的事情 我能找到的所有例子都可以使用Jso
  • 在Python中访问第n维[重复]

    这个问题在这里已经有答案了 我想要轻松读取多维 numpy 数组的某些部分 对于任何数组 访问第一维都很容易 b index 另一方面 访问第六维度是 困难的 尤其是阅读 b index the next person to read th
  • 角度 HTTP POST 请求

    我在 Angular2 和 Spring MVC 中构建一个应用程序 当我尝试向我的服务器发出 POST 请求时 我没有收到任何成功或失败的迹象 但请求没有发生 因为我看不到新的数据 当我从邮递员那里发出请求时 请求成功 我可以看到新数据
  • 什么时候应该使用 MySQLi 而不是 MySQL?

    有人可以帮我解释一下使用 MySQLi 而不是 MySQL 的优点和缺点吗 是否存在不应该使用 MySQLi 的情况 为了使用 MySQLi 我是否需要以不同的方式配置我的服务器 例如 我是否需要升级 Apache 或 PHP 才能支持 M
  • 如何创建带有百分比计数器的 jQuery 预加载器?

    我编写了从一本 jQuery 初学者书中学到的代码 它非常适合作为页面的预加载器 但我如何为其创建百分比 计数器呢 基于加载了多少正文内容 目前我只有一个动画 GIF 但我想要一些更高级的东西 Lets preload window loa
  • 使用转换器和提供程序而不是属性映射时如何让 ModelMapper.validate() 成功?

    有类似的东西 Getter Setter public static class Entity private int hash private LocalDateTime createdTime and Getter Setter pub
  • 调用 oncontextmenu 时 Firefox 浏览器的事件未定义

    我在右键单击页面中的按钮时显示上下文菜单 用于显示上下文菜单的代码是 window addEventListener contextmenu function e e preventDefault false 当我右键单击按钮时 调用的上下