HTML5中原生的右键菜单创建方法


Posted in HTML / CSS onJune 28, 2016

即使是JavaScript被禁止,这些右键菜单仍然能正常显示。所以,如果你想尊重用户的选择,最好的方法是用JavaScript来创建这些菜单元素,注入到DOM元素里,这样,当JavaScript被禁止时,这些右键菜单也不显示了。

HTML5中原生的右键菜单创建方法

HTML5规范里有一个被大家忽略里的好东西,那就是右键菜单。HTML5里的右键菜单规范显示,程序员可以通过创建简单的HTML5menu和menuitem标记来生成右键菜单。菜单只在指定区域的右键菜单内显示。所以,你不需要再通过创建浏览器插件来实现这种效果。下面就让我来展示如何用基本的HTML标记来创建个性化的右键菜单!

HTML代码

首先我们定义一个HTML区域,给它分配一个ID,之后我们要用到这个ID:

XML/HTML Code复制内容到剪贴板
  1. <section contextmenu="mymenu">  
  2.  <!--    
  3.   为了让代码清晰整洁   
  4.   我会把菜单放到这个元素内部    
  5.  -->  
  6. </section>  
  7.   

定义好这个元素后,现在我们来创建真正的菜单元素:

XML/HTML Code复制内容到剪贴板
  1. <menu type="context" id="mymenu">  
  2.  <menuitem label="重新加载本文" onclick="window.location.reload();" icon="/images/refresh-icon.png"></menuitem>  
  3.  <menuitem label="跳跃至评论区" onclick="window.location='#comments';" icon="/images/comment_icon.gif"></menuitem>  
  4.  <menu label="分享本文至..." icon="/images/share_icon.gif">  
  5.   <menuitem label="新浪微博" icon="/images/twitter_icon.gif" onclick="goTo('//twitter.com/intent/tweet?text=' + document.title + ':  ' + window.location.href);"></menuitem>  
  6.   <menuitem label="QQ空间" icon="/images/facebook_icon16x16.gif" onclick="goTo('//facebook.com/sharer/sharer.php?u=' + window.location.href);"></menuitem>  
  7.  </menu>  
  8. </menu>  
  9.   

注意,这里的menu标记的ID和上面的contextmenu里的值是一致的,这样做的效果是,只有在上面的那个section区域里点击右键时才会显示这些右键菜单。这些菜单里可以配置菜单名,菜单图标和onclick事件,用来声明它们的意义和要执行的动作。动作可以是预先定义的JavaScript动作,或是执行inline的JavaScript代码。相同的菜单可以放到页面的多个区域,不需要重复创建。

目前只有火狐浏览器是唯一实现了这个API的浏览器。一些特别重要的功能我一般不喜欢放到右键菜单里,但有这样的功能当然是十分方便,这个API的主旨是提高易用性而不会有任何负面影响。我在菜单里放置的分享功能就是一个很好的例子。相信你在你的项目里也经常使用右键菜单,不是吗?

HTML / CSS 相关文章推荐
使用CSS3实现字体颜色渐变的实现
Mar 09 HTML / CSS
css3实现一个div设置多张背景图片及background-image属性实例演示
Aug 10 HTML / CSS
初探CSS3中的calc()功能
Jul 14 HTML / CSS
详解基于 Canvas 手撸一个六边形能力图
Sep 02 HTML / CSS
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
Jan 31 HTML / CSS
浅析HTML5的WebSocket与服务器推送事件
Feb 19 HTML / CSS
canvas绘制视频封面的方法
Feb 05 HTML / CSS
html5 制作地图当前定位箭头的方法示例
Jan 10 HTML / CSS
Html5定位终极解决方案
Feb 05 HTML / CSS
HTML5 Blob对象的具体使用
May 22 HTML / CSS
AmazeUI 平滑滚动效果的示例代码
Aug 20 HTML / CSS
css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效
Apr 29 HTML / CSS
使用HTML5里的classList操作CSS类
Jun 28 #HTML / CSS
HTML5 canvas基本绘图之图形组合
Jun 27 #HTML / CSS
HTML5不支持标签和新增标签详解
Jun 27 #HTML / CSS
HTML5 canvas基本绘图之文字渲染
Jun 27 #HTML / CSS
HTML5 canvas基本绘图之绘制曲线
Jun 27 #HTML / CSS
HTML5 canvas基本绘图之图形变换
Jun 27 #HTML / CSS
HTML5 canvas基本绘图之填充样式实现
Jun 27 #HTML / CSS
You might like
PDO防注入原理分析以及使用PDO的注意事项总结
2014/10/23 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
JS分页控件 可用于无刷新分页
2013/07/23 Javascript
js监听键盘事件示例代码
2013/07/26 Javascript
jQuery取得设置清空select选择的文本与值
2014/07/08 Javascript
JS在IE下缺少标识符的错误
2014/07/23 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
Web表单提交之disabled问题js解决方法
2015/01/13 Javascript
JavaScript实现更改网页背景与字体颜色的方法
2015/02/02 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
jQuery实现区域打印功能代码详解
2016/06/17 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
JS实现复选框的全选和批量删除功能
2017/04/05 Javascript
JavaScript继承的特性与实践应用深入详解
2018/12/30 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
2019/07/02 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
Python中使用Inotify监控文件实例
2015/02/14 Python
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
Python SQLite3数据库日期与时间常见函数用法分析
2017/08/14 Python
获取python文件扩展名和文件名方法
2018/02/02 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
python将图片转base64,实现前端显示
2020/01/09 Python
Python标准库itertools的使用方法
2020/01/17 Python
HTML5实现预览本地图片
2016/02/17 HTML / CSS
描述一下JVM加载class文件的原理机制
2013/12/08 面试题
浙大网新C/C++面试解惑
2015/05/27 面试题
酒店人事专员岗位职责
2013/12/19 职场文书
春节活动策划方案
2014/01/24 职场文书
报告会主持词
2014/04/02 职场文书
宣传标语大全
2014/07/01 职场文书
公司董事任命书
2015/09/21 职场文书
浅谈Web Storage API的使用
2021/06/23 Javascript
Java反应式框架Reactor中的Mono和Flux
2021/07/25 Java/Android
vue里使用create, mounted调用方法
2022/04/26 Vue.js