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 3D位移translate效果实例介绍
May 03 HTML / CSS
使用css3实现的windows8开机加载动画
Dec 09 HTML / CSS
CSS3实现闪烁动画效果的方法
Feb 09 HTML / CSS
关于box-sizing的全面理解
Jul 28 HTML / CSS
html5中为audio标签增加停止按钮动作实现方法
Jan 04 HTML / CSS
Javascript 高级手势使用介绍
Apr 21 HTML / CSS
HTML5+JS实现俄罗斯方块原理及具体步骤
Nov 29 HTML / CSS
详解Canvas实用库Fabric.js使用手册
Jan 07 HTML / CSS
H5 video poster属性设置视频封面的方法
May 25 HTML / CSS
移动端HTML5开发神器之vconsole详解
Dec 15 HTML / CSS
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
Mar 31 HTML / CSS
CSS 鼠标选中文字后改变背景色的实现代码
May 21 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
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
PHP实现GIF图片验证码
2015/11/04 PHP
PHP实现支持加盐的图片加密解密
2016/09/09 PHP
JS 树形递归实例代码
2010/05/18 Javascript
jquery中ajax调用json数据的使用说明
2011/03/17 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
js函数setTimeout延迟执行的简单介绍
2013/07/17 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
svg动画之动态描边效果
2017/02/22 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
2017/03/01 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
2019/09/26 Javascript
vue+element 实现商城主题开发的示例代码
2020/03/26 Javascript
JavaScript 禁止用户保存图片的实现代码
2020/04/28 Javascript
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
[46:23]OG vs EG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python使用turtule画五角星的方法
2015/07/09 Python
简单了解Django模板的使用
2017/12/20 Python
Python面向对象之继承和组合用法实例分析
2018/08/27 Python
python print出共轭复数的方法详解
2019/06/25 Python
Django 数据库同步操作技巧详解
2019/07/19 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
python 计算方位角实例(根据两点的坐标计算)
2020/01/17 Python
Python求解排列中的逆序数个数实例
2020/05/03 Python
python上selenium的弹框操作实现
2020/07/13 Python
微信端html5页面调用分享接口示例
2018/03/14 HTML / CSS
Html5导航栏吸顶方案原理与对比实现
2020/06/10 HTML / CSS
美国二手奢侈品寄售网站:TheRealReal
2016/10/29 全球购物
学生安全责任书
2014/04/15 职场文书
销售队伍口号
2014/06/11 职场文书
党支部创先争优活动总结
2014/08/28 职场文书
工作经验交流材料
2014/12/30 职场文书
2015年安置帮教工作总结
2015/05/22 职场文书
《小蝌蚪找妈妈》教学反思
2016/02/23 职场文书
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL
Android自定义ScrollView实现阻尼回弹
2022/04/01 Java/Android