medialize/jquery-context-menu

功能齐全的上下文菜单处理程序,能够处理数千个元素

安装次数: 22,517

依赖关系: 2

推荐者: 0

安全性: 0

星标: 0

关注者: 1

分支: 744

语言:HTML

类型:组件

1.6.7 2015-07-21 12:35 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:04:12 UTC


README

此存储库正在寻找新的维护者

Travis Build Status

.contextMenu按需生成DOM元素。

特性 - 演示 - 文档

依赖项

  • jQuery 1.7(使用新的.on().off()事件API)
  • jQuery UI位置(可选但推荐)

用法

从javascript注册contextMenu

$.contextMenu({
    // define which elements trigger this menu
    selector: ".with-cool-menu",
    // define the elements of the menu
    items: {
        foo: {name: "Foo", callback: function(key, opt){ alert("Foo!"); }},
        bar: {name: "Bar", callback: function(key, opt){ alert("Bar!") }}
    }
    // there's more, have a look at the demos and docs...
});

查看演示

HTML5 兼容性

Firefox 8实现了使用<menuitem>标签的contextmenu。然而,规范指出应该使用<command>标签。$.contextMenu接受两者。

Firefox 8尚未完全实现contextmenu规范(问题单#617528)。元素abuttoninputoption作为命令的使用被完全忽略。它也没有(从视觉上)区分复选框/单选框和常规命令(问题单#705292)。

注意:尽管规范指出应该将<option>渲染为常规命令,但$.contextMenu会实际渲染一个<select>。从HTML5 <menu>导入contextMenu

$.contextMenu("html5");

交互原则

您当然可以使用鼠标使用上下文菜单。一旦打开,您也可以使用键盘(完全)导航它。

  • ↑(上)列表中的上一项,会跳过禁用元素并循环
  • ↓(下)列表中的下一项,会跳过禁用元素并循环
  • →(右)进入子菜单
  • ←(左)从子菜单升起
  • ↵(回车)调用命令
  • ⇥(制表符)下一个项目或输入元素,会跳过禁用元素并循环
  • ⇪ ⇥(Shift制表符)上一个项目或输入元素,会跳过禁用元素并循环
  • ⎋(Esc)关闭菜单
  • ⌴(空格)捕获并忽略以避免页面滚动(与原生菜单保持一致)
  • ⇞(Page Up)捕获并忽略以避免页面滚动(与原生菜单保持一致)
  • ⇟(Page Down)捕获并忽略以避免页面滚动(与原生菜单保持一致)
  • ↖(Home)列表中的第一项,会跳过禁用元素
  • ↘(End)列表中的最后一项,会跳过禁用元素

除了显而易见的之外,浏览器还会对字母数字按键输入做出反应。在上下文菜单中按 r 键会使 Firefox(8)立即重新加载页面。Chrome 会选择查看页面信息,Safari 会选择打印文档。很酷,对吧?直到在 Windows 上尝试相同的操作之前,我都没有意识到浏览器正在使用访问键来处理这个问题。我本想输入某个东西的第一个字符,比如“s”代表“保存”,然后遍历所有以“s”开头的命令。但那只是我——我对用户体验了解多少?无论如何,$.contextMenu 现在也支持访问键处理。

压缩

使用 Google Closure Compiler

// ==ClosureCompiler==
// @compilation_level SIMPLE_OPTIMIZATIONS
// @output_file_name contextMenu.js
// @code_url http://medialize.github.com/jQuery-contextMenu/jquery-1.8.2.min.js
// @code_url http://medialize.github.com/jQuery-contextMenu/src/jquery.ui.position.js
// @code_url http://medialize.github.com/jQuery-contextMenu/src/jquery.contextMenu.js
// ==/ClosureCompiler==    

作者

许可证

$.contextMenu 在 MIT 许可证GPL v3 下发布——哪个更适合您的需求。

变更日志

1.6.7(2015年5月21日)

  • 寻找维护者说明
  • 发布到 npm

1.6.6(2014年7月12日)

  • 修复 bower 清单

1.6.5(2013年1月20日)

  • 修复“打开第二个菜单会破坏层”的问题 - (问题 #105

1.6.4(2013年1月19日)

1.6.3(2013年1月19日)

1.6.2(2013年1月19日)

  • 修复 1.6.1 中引入的“菜单不会关闭”的回归问题

1.6.1(2013年1月19日)

  • 修复潜在的 HTML 解析问题
  • 升级到 jQuery UI 位置 v1.10.0
  • CRLF 替换为 LF(不知道最初是如何发生的...)
  • 添加 options.reposition 以允许/禁止简单地重新定位菜单而不是重新构建它(问题 #104

1.6.0(2012年12月29日)

1.5.25 (2012年10月8日)

1.5.24 (2012年8月30日)

  • 将上下文菜单选项添加到输入命令事件(问题 72,dtex)
  • JSLint的代码美化

1.5.23 (2012年8月22日)

  • 修复在滚动文档上重新定位/关闭问题(问题 69
  • 修复jQuery引用(问题 68

1.5.22 (2012年7月16日)

  • 修复动画和隐藏时删除的问题(问题 #64)

1.5.21 (2012年7月14日)

  • 修复销毁时背景不会删除的问题(问题 #63)

1.5.20 (2012年6月26日)

注意:版本标签为v1.6.20?!

  • 修复IE6中背景定位不正确的问题(问题 #59)
  • 修复Chrome / Safari中嵌套的输入元素不可访问的问题(问题 #58)

1.5.19

注意:版本标签缺失...?!

  • 修复当$.ui.position不可用时子菜单定位问题(问题 #56)

1.5.18

注意:版本标签缺失...?!

  • 修复HTML5 <menu>导入(问题 #53)

1.5.17 (2012年6月4日)

  • 修复默认为options.trigger = "right"的问题
  • 修复变量名拼写错误(在问题 #51 中)
  • 修复打开其他菜单时菜单不会关闭的问题(在问题 #51 中)
  • 添加Firefox 12中contextmenu错误的解决方案(在问题 #51 中)

1.5.16 (2012年5月29日)

  • 在CSS中添加了供应商前缀的用户选择
  • 修复使用<body>作为触发时z-index排序的问题(问题 #49)

1.5.15 (2012年5月26日)

  • 允许在显示菜单时直接打开另一个元素的菜单(问题 #48)
  • 修复自动隐藏选项,菜单无法正确隐藏

1.5.14 (2012年5月22日)

  • options.build()会破坏默认选项(问题 #47)
  • $.contextMenu('destroy')不会删除背景

1.5.13 (2012年5月4日)

  • 将$trigger暴露给动态构建的自定义菜单项类型(问题 #42)
  • 修复打开菜单的重新定位问题(以前是意外重新打开)
  • 添加异步示例
  • 弃用ignoreRightClick,改为检测正确的事件类型

1.5.12 (2012年5月2日)

  • 防止在点击子菜单项时调用子菜单的第一个项目的回调函数(问题 #41)

1.5.11 (2012年4月27日)

  • 提供opt.$trigger到显示事件(问题 #39)

1.5.10 (2012年4月21日)

  • ignoreRightClick无法防止菜单已打开时的右键点击(问题 #38)

1.5.9 (2012年3月10日)

  • 如果build()没有返回任何项,则显示空菜单(问题 #33)

1.5.8 (2012年1月28日)

  • 捕获Page Up和Page Down键,像空格一样忽略(问题 #30)
  • 添加Home / End键以跳转到菜单的第一个/最后一个命令(问题 #29)
  • 中按Enter键会引发错误(问题 #28)

1.5.7 (2012年1月21日)

  • 非ASCII字符在jquery.contextMenu.js中导致Rails兼容性问题(问题 #27)

1.5.6 (2012年1月8日)

  • bug:contextmenu事件未传递给build()回调(问题 #24)
  • bug:Safari和Chrome中子菜单标记不会正确显示(问题 #25)

1.5.5 (2012年1月6日)

  • bug:在给输入元素焦点时,Internet Explorer不会关闭菜单(问题 #23)

1.5.4 (2012年1月5日)

  • bug:未设置子菜单的z-index可能导致子菜单无法正确重叠主菜单(问题 #22)

1.5.3 (2012年1月1日)

  • bug:console.log is undefined

1.5.2 (2012年12月25日)

  • bug:子菜单无法正确更新其禁用状态(问题 #16)[再次...]
  • bug:子菜单无法根据min-width和max-width正确调整宽度(问题 #18)

1.5.1 (2011年12月18日)

  • 子菜单不会正确更新其禁用状态(问题编号 #16)

1.5(2011年12月13日)

1.4.4(2011年12月12日)

  • 当触发元素为position:fixed时,定位问题(问题编号 #14)

1.4.3(2011年12月11日)

  • 当菜单可见时,按键处理程序会捕获所有按键(基本上禁用了F5等)

1.4.2(2011年12月6日)

  • 问题:禁用回调函数中不可用opt.$trigger
  • jQuery升级到1.7.1

1.4.1(2011年11月9日)

  • 问题:当导入时不会正确传递操作(点击事件)

1.4(2011年11月7日)

  • 升级到jQuery 1.7(更改了依赖!)
  • 添加了内部事件contextmenu:focuscontextmenu:blurcontextmenu:hide
  • 添加了自定义类型
  • 问题:在上未正确设置className

1.3(2011年9月5日)

  • 添加了对快捷键的支持
  • 问题:两个子菜单可以同时打开

1.2.2(2011年8月24日)

  • HTML5导入中的问题

1.2.1(2011年8月24日)

  • HTML5检测中的问题

1.2(2011年8月24日)

  • 为Firefox 8添加了对的兼容性
  • 升级到jQuery 1.6.2

1.1(2011年8月11日)

  • 问题 #1 HTML5操作传递的TypeError
  • 问题 #2 禁用回调函数未正确调用
  • 特性 #3 悬停触发器的自动隐藏选项
  • 特性 #4 选项:使用单个回调函数对所有命令进行操作,而不是为每个项目注册相同的函数
  • 对于非右键触发器,忽略右键点击(原始"右键菜单"事件触发器)

1.0(2011年7月7日)

  • 初始$.contextMenu处理程序