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的列表toggle特效实例教程
Jan 04 HTML / CSS
解决CSS3的opacity属性带来的层叠顺序问题
May 09 HTML / CSS
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
Jan 12 HTML / CSS
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
Oct 08 HTML / CSS
详解利用canvas实现环形进度条的方法
Jun 12 HTML / CSS
HTML5 b和i标记将被赋予真正的语义
Jul 16 HTML / CSS
HTML5语音识别标签写法附图
Nov 18 HTML / CSS
html5使用canvas绘制太阳系效果
Dec 15 HTML / CSS
H5最强接口之canvas实现动态图形功能
May 31 HTML / CSS
使用canvas来完成线性渐变和径向渐变的功能的方法示例
Jul 25 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
May 19 HTML / CSS
CSS 新特性 contain控制页面的重绘与重排问题
Apr 30 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
PHILIPS D1835/D1875的电路分析与打理
2021/03/02 无线电
一个MYSQL操作类
2006/11/16 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
2011/11/21 PHP
详解PHP中strlen和mb_strlen函数的区别
2014/03/07 PHP
PHP打开和关闭文件操作函数总结
2014/11/18 PHP
PHP中类的继承和用法实例分析
2016/05/24 PHP
php微信开发之自定义菜单完整流程
2016/10/08 PHP
PHP的mysqli_ssl_set()函数讲解
2019/01/23 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
爱恋千雪-US-AscII加密解密工具(网页加密)下载
2007/06/06 Javascript
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
编写自己的jQuery提示框(Tip)插件
2015/02/05 Javascript
浅析script标签中的defer与async属性
2016/11/30 Javascript
Bootstrap 3 进度条的实现
2017/02/22 Javascript
详解vuex 中的 state 在组件中如何监听
2017/05/23 Javascript
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
微信小程序实现底部导航
2018/11/05 Javascript
Vue的props父传子的示例代码
2020/05/20 Javascript
Python标准库内置函数complex介绍
2014/11/25 Python
Python基于socket模块实现UDP通信功能示例
2018/04/10 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
2018/06/11 Python
python实现字符串加密 生成唯一固定长度字符串
2019/03/22 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
如何基于windows实现python定时爬虫
2020/05/01 Python
python和go语言的区别是什么
2020/07/20 Python
统计学专业毕业生的自我评价分享
2013/11/28 职场文书
学习雷锋活动总结
2014/04/29 职场文书
绿色小区申报材料
2014/08/22 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
《酸的和甜的》教学反思
2016/02/18 职场文书
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS