intelogie/jquery-contextmenu

该软件包最新版本(dev-master)没有可用的许可信息。

安装: 338

依赖者: 0

建议者: 0

安全: 0

星级: 0

关注者: 2

分支: 744

语言:JavaScript

dev-master 2016-07-19 03:18 UTC

This package is auto-updated.

Last update: 2024-08-29 04:40:04 UTC


README

此存储库现在有新的维护者

重要:已发布2.0.0版本,已更改图标类的默认名称,以避免与定义类 'icon' 的框架发生CSS冲突。

Travis Build Status

.contextMenu根据需要生成DOM元素。

特性 - 演示 - 文档

依赖关系

  • jQuery >=1.8.2
  • 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 tab) 前一个项目或输入元素,将跳过禁用元素并循环
  • ⎋ (Esc) 关闭菜单
  • ⌴ (空格) 捕获并忽略以避免页面滚动(与原生菜单保持一致)
  • ⇞ (页上) 捕获并忽略以避免页面滚动(与原生菜单保持一致)
  • ⇟ (页下) 捕获并忽略以避免页面滚动(与原生菜单保持一致)
  • ↖ (Home) 列表中的第一项,将跳过禁用元素
  • ↘ (End) 列表中的最后一项,将跳过禁用元素

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

作者

许可证

$.contextMenu 在 MIT 许可证 下发布

特别感谢

Font-Awesome 图标来自 encharm/Font-Awesome-SVG-PNG

更新日志

2.2.3

修复

  • 回调现在从菜单项所在的上下文中调用(如子菜单)。目前,只有当项不在子菜单中时,它们才会覆盖根回调,这样回调总是正确的。不幸的是,这也意味着如果任何地方使用相同的键,回调选项仍然不完整。这不容易修复。问题 #413。

2.2.1

新增

  • 'cm_seperator' 类型的别名:'cm_separator'(感谢 @nelson6e65)

更改

  • 删除了旧的集成测试,构建它们的框架已被放弃。
  • 在 TravisCI 中启用 jQuery 3 测试

修复

  • 修复了 jQuery 3 支持,这是由于 jQuery UI(修复 #407)的结果
  • 在使用 opt.$menu 和 root.$menu 之前添加了对 null 的检查。修复 #352(感谢 @andreasrosdal)
  • 悬停时对颜色或 input 选项的小修复

文档

  • 为 cm_seperator 添加了文档(感谢 @nelson6e65)
  • 修复了项目选项文档中的拼写错误(感谢 @nelson6e65)
  • 修复了动画:fadeOut 中的拼写错误(感谢 @avi-meslati-sp)
  • 修复了文档代码中的拼写错误:show 被使用了两次(感谢 @kgeorgiou)
  • 修复了异步文档

2.2.0

新增

  • 添加了将项目标题作为 HTML 显示的选项(感谢 @brassard)
  • 完整的 Font Awesome 支持

更改

  • 使用相对单位修复 CSS(感谢 @RoachMech)(问题 #386
  • 将 CSS 中的 Unicode 字符更改为可读的字符串。
  • 改进了项目样式(感谢 @anseki)

修复

  • 在某些 Windows 机器上强制创建 woff2 字体。
  • 修复了禁用项无法再获得焦点的问题(感谢 @anseki)
  • 修复了菜单尺寸计算,确保没有项再占用两行(感谢 @anseki)
  • 修复了 bower.json(感谢 @nelson6e65)
  • 修复了“位置”和“构建”回调文档中的拼写错误(感谢 @mmcev106)

2.1.1

  • 修复了使用带有自定义参数的 open 函数时的问题(感谢 @RareDevil)
  • 重新打开菜单时增加 width,通过使用 outerwidth 来计算宽度。修复 #360(感谢 @anseki)
  • 当关闭菜单时,子菜单不会折叠,修复 #358(感谢 @anseki)
  • 在通过键盘滚动项时,添加了小的延迟,以防止由于一像素或两像素的误差而错过菜单。修复 #347(感谢 @Risord)
  • 在滚动项时检查项是否以任何方式隐藏。修复 #348
  • 将链接和文档的基本 URL 更改为 https,如 @OmgImAlexis 在 PR#345 中所述

2.1.0

  • 在选项对象中添加了对将函数作为 zIndex 值的支持(感谢 @eivindga)
  • 修复了切换到正确类型的分隔符(感谢 @RareDevil)
  • 修复了子菜单尺寸错误的问题(问题 #308)(感谢 @RareDevil)
  • package.json 中的条目不正确(问题 #336)(感谢 @Dijir)
  • 将禁用图标以及文本变为灰色(问题 #337)(感谢 @r02b)
  • 优化了生成的 CSS,以便可以使用 context-menu-icon 类覆盖图标 CSS。
  • 使用 appendTo 时 contextmenu 的定位(感谢 @mrMarco)
  • 在键盘事件处理器中检查目标是否具有比 contextmenu 更高的 zIndex(感谢 @RareDevil)

2.0.1(2015年12月3日)

  • 从 jquery.contextMenu.js 中移除了可执行位(感谢 @jacknagel)
  • 修复了使用函数作为图标时的问题(感谢 @RareDevil)
  • 修复了子菜单尺寸错误的问题(感谢 @RareDevil)
  • 修复了 contextmenu 会打开另一个菜单的问题(感谢 @RareDevil) - (问题 #252问题 #293
  • 修复了节点名称未附加到输入元素标签的问题。(感谢 @RareDevil)
  • 添加检查以确定 root.$layer 是否存在,以防止在定义的对象上调用 hide()。(感谢 @andreasrosdal)

2.0.0(2015年10月28日)

  • 本版本更改了图标类的默认名称,以防止与定义了 'icon' 类的框架发生 CSS 冲突。为了保持图标名称与更改之前相同,您可以更改图标类名的默认设置(关于 classNames 选项的文档)。类名可能将是 "context-menu-icon-",这是之前由 @rodneyrehm 提出的。
  • 您不能使用 SASS 来自定义您的 contextmenu。gulp 命令 build-icons 从 src/icons 中获取所有 SVG 图标并将它们构建成一个字体。为此,我们需要打破向下兼容性。这意味着新的 CSS 没有定义旧的 .icon 类,这使得它在 CSS 框架中更加稳定。文档的第一版可以在这里找到。
  • 1.x 分支将保持一段时间,以便进行错误修复。但将在未来几个月内停止对 1.x 的支持。
  • 撤销了 1.7.0 中的更改:.html() 恢复为 .text(),因为这是一个安全问题(感谢 @arai-a)

1.10.1(2015年10月25日)

  • 添加了 gulp 命令(integration-test-paths)以在文档生成器覆盖后更改集成测试中的路径(感谢 @arai-a)
  • 确保 contextmenu 不在客户端区域外(感谢 @arai-a)
  • 更新 jQuery 依赖项,以避免使用 npm 时重复安装 jQuery(感谢 @fredericlb)

1.9.1(2015年10月11日)

  • 修复了 classNames 选项在子菜单上失败的问题
  • 新增文档网站和生成使用 couscous

1.9.0(2015年10月1日)

  • 使类可配置,以避免容易发生冲突。请参阅关于 classNames 选项的文档。这还准备了将类名更改为非冲突默认值,以便与如 bootstrap 这样的框架停止麻烦。
  • 修复了处理分隔字符串的问题。它在 String.$node 的受保护属性上抛出了错误
  • 修复了在坐标 0,0 打开 contextmenu 的问题(由 Andreme 完成)
  • 修复了 jQuery UI 检查(问题 #182
  • 更新了图标函数的参数文档

1.8.1(2015年9月14日)

  • 更新了 readme。
  • 更新了dist文件

1.8.0(2015年9月14日)- dist文件未更新!

  • 添加了包含编译后的JS和CSS的dist文件夹,并将这些文件添加到包和bower配置中。
  • 修复了jQuery UI位置文档链接(问题 #274
  • 项目图标现在可以是一个回调函数,用于动态决定图标类。 - (问题 #158问题 #129问题 #151问题 #249
  • 对存在填充时屏幕边缘的宽度和高度计算进行了小幅度修复。

1.7.0(2015年8月29日)

  • 触摸支持优化(由kccarter76提供)
  • 将.text更改为.html,以避免额外的span固定 - (问题 #252
  • 在项目定义中添加了可见性回调函数
  • 在从HTML5元素创建时,复制HTML5图标属性
  • 修复了多次打开时菜单增长的问题 - (问题 #197
  • 修复了测试无法运行的问题

1.6.8(2015年8月18日)

  • 为新维护者进行更改

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"options
  • 修复问题 #51 中的变量名拼写错误
  • 修复打开其他菜单时菜单不会关闭的问题 (问题 #51)
  • 为Firefox 12的 contextmenu-bug 添加解决方法 (问题 #51)

1.5.16 (2012年5月29日)

  • 在CSS中添加了供应商前缀的用户选择
  • 修复当使用 <body> 作为触发器时的z-indexing问题 (问题 #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)
  • 修复打开菜单的重新定位问题(以前是意外重新打开)
  • 添加异步示例
  • 用正确的事件类型检测代替忽略右键点击

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日)

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

1.5.6 (2012年1月8日)

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

1.5.5(2012年1月6日)

  • 错误:当给输入元素焦点时,Internet Explorer 无法关闭菜单(问题 #23)

1.5.4(2012年1月5日)

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

1.5.3(2012年1月1日)

  • 错误:console.log 未定义

1.5.2(2012年12月25日)

  • 错误:子菜单无法正确更新其禁用状态(问题 #16)[再次…]
  • 错误:子菜单无法根据 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 时,定位 <menu>(问题 #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日)

  • 错误:<menu> 导入不会正确传递操作(点击事件)

1.4(2011年11月7日)

  • 升级到 jQuery 1.7(更改了依赖!)
  • 添加了内部事件 contextmenu:focuscontextmenu:blurcontextmenu:hide
  • 添加了自定义 <command> 类型
  • 错误:在 <menu> 上没有正确设置 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 添加了对 <menuitem> 的兼容性
  • 升级到 jQuery 1.6.2

1.1(2011年8月11日)

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

1.0(2011年7月7日)

  • 初始 $.contextMenu 处理程序