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 transform 属性来变换背景图的方法
May 07 HTML / CSS
CSS3的Border-radius轻松制作圆角
Dec 24 HTML / CSS
css3中新增的样式使用示例附效果图
Aug 19 HTML / CSS
通过CSS3的object-fit来调整图片适配尺寸的技巧简介
Feb 27 HTML / CSS
利用CSS3实现进度条的两种姿势详解
Mar 21 HTML / CSS
详解CSS 3 中的 calc() 方法
Jan 12 HTML / CSS
CSS Houdini实现动态波浪纹效果
Jul 30 HTML / CSS
Html5内唤醒百度、高德APP的实现示例
May 20 HTML / CSS
利用html5 canvas破解简单验证码及getImageData接口应用
Jan 25 HTML / CSS
canvas 如何绘制线段的实现方法
Jul 12 HTML / CSS
前端H5 Video常见使用场景简介
Aug 21 HTML / CSS
HTML5 canvas实现的静态循环滚动播放弹幕
Jan 05 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
我的论坛源代码(五)
2006/10/09 PHP
php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
2011/04/07 PHP
php+curl 发送图片处理代码分享
2015/07/09 PHP
PHP闭包函数详解
2016/02/13 PHP
php 算法之实现相对路径的实例
2017/10/17 PHP
php+croppic.js实现剪切上传图片功能
2018/08/14 PHP
JS 去除Array中的null值示例代码
2013/11/20 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
2016/10/30 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
单击按钮发送验证码,出现倒计时的简单实例
2017/03/17 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
react-redux中connect()方法详细解析
2017/05/27 Javascript
layui select获取自定义属性方法
2018/08/15 Javascript
vue安装和使用scss及sass与scss的区别详解
2018/10/15 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
2018/10/31 Javascript
微信小程序实现页面下拉刷新和上拉加载功能详解
2018/12/03 Javascript
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
浅谈Python类的__getitem__和__setitem__特殊方法
2016/12/25 Python
Python 编码规范(Google Python Style Guide)
2018/05/05 Python
python求最大值,不使用内置函数的实现方法
2019/07/09 Python
基于Python fminunc 的替代方法
2020/02/29 Python
CSS3中Color的一些特性介绍
2012/05/27 HTML / CSS
HTML5 input新增type属性color颜色拾取器的实例代码
2018/08/27 HTML / CSS
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
世界上第一个水枕头:Mediflow
2018/12/06 全球购物
中学生个人自我评价
2014/02/06 职场文书
《记承天寺夜游》教学反思
2014/02/16 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
2014年测量员工作总结
2014/12/12 职场文书
酒店前台接待岗位职责
2015/04/02 职场文书
村党组织公开承诺书
2015/04/30 职场文书
个人售房合同协议书
2016/03/21 职场文书
怎样写工作总结啊!
2019/06/18 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
DIV CSS实现网页背景半透明效果
2021/12/06 HTML / CSS
mybatis 获取更新记录的id
2022/05/20 Java/Android