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 旋转按钮 使用CSS3创建一个旋转可变色按钮
Dec 31 HTML / CSS
利用css3制作3D样式按钮实现代码
Mar 18 HTML / CSS
css3中检验表单的required,focus,valid和invalid样式
Feb 21 HTML / CSS
HTML5 Web 存储详解
Sep 16 HTML / CSS
HTML5实现表单自动验证功能实例代码
Jan 11 HTML / CSS
html5+svg学习指南之SVG基础知识
Dec 17 HTML / CSS
微信浏览器取消缓存的方法
Mar 28 HTML / CSS
HTML5+WebSocket实现多文件同时上传的实例
Dec 29 HTML / CSS
html5 canvas合成海报所遇问题及解决方案总结
Aug 03 HTML / CSS
HTML5新增属性data-*和js/jquery之间的交互及注意事项
Aug 08 HTML / CSS
Canvas 帧动画吃苹果小游戏
Aug 05 HTML / CSS
使用CSS实现百叶窗效果示例代码
May 07 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 无线电
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
PHP设计模式之适配器模式代码实例
2015/05/11 PHP
PHP输入输出流学习笔记
2015/05/12 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
2016/03/05 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
js string 转 int 注意的问题小结
2013/08/15 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
jQuery中:selected选择器用法实例
2015/01/04 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
JavaScript之cookie技术详解
2016/11/18 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
2017/03/09 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
2019/05/10 Javascript
星球大战与Python之间的那些事
2016/01/07 Python
python 实现网上商城,转账,存取款等功能的信用卡系统
2016/07/15 Python
django+js+ajax实现刷新页面的方法
2017/05/22 Python
python使用opencv驱动摄像头的方法
2018/08/03 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
使用pycharm设置控制台不换行的操作方法
2019/01/19 Python
python 标准差计算的实现(std)
2019/07/29 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
2019/08/09 Python
python生成随机红包的实例写法
2019/09/02 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
python shutil文件操作工具使用实例分析
2019/12/25 Python
Django接收照片储存文件的实例代码
2020/03/07 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
Opencv+Python识别PCB板图片的步骤
2021/01/07 Python
CSS3控制HTML元素动画效果
2014/02/08 HTML / CSS
HTML5中原生的右键菜单创建方法
2016/06/28 HTML / CSS
卖车协议书
2014/04/21 职场文书
九一八事变演讲稿范文
2014/09/14 职场文书
青年岗位能手事迹材料(2016推荐版)
2016/03/01 职场文书
创业不要错过,这4种餐饮新模式
2019/07/18 职场文书
Python的flask接收前台的ajax的post数据和get数据的方法
2021/04/12 Python