`
阿尔萨斯
  • 浏览: 4169902 次
社区版块
存档分类
最新评论

你不知道的5个HTML5 API

 
阅读更多
毫无疑问,HTML5已经成为当今最流行的一门技术,尤其是Web开发者们对HTML5的兴趣是日趋浓厚。HTML5的许多功能都也能在现代浏览器中得以实现。然而,作为开发者,除了关注HTML5的功能和开发工具外,你有对其API留意过吗?本文将为你提供5个你所不知道的API,助你在HTML5开发这条路上走的更远。

一提到HTML5,你脑海里是不是闪现这样的画面:“一大堆女和独角兽走进房间,然后演奏着 I’m Sexy and I know it”。产生这样的想法难道是我们的错吗?API的停滞不前,使一些基本的特性,例如使用“占位符”都需要“花一分钟”。尽管HTML5的许多功能都已经在现代浏览器中实现,但开发者却很少关注那些轻量且非常实用的API。本文就将为您“曝光”5个你所不知道的API,并且希望你能探索出更多的HTML5 API,助你在这条路上走的更远。

Element.classList

classList API提供了一个CSS控制器,而这功能以前都是通过JavaScript实现的:

  1. //Addaclasstoanelement
  2. myElement.classList.add("newClass");
  3. //Removeaclasstoanelement
  4. myElement.classList.remove("existingClass");
  5. //Checkforexistence
  6. myElement.classList.contains("oneClass");
  7. //Toggleaclass
  8. myElement.classList.toggle("anotherClass");

该API最大的优点是:简单和智能,阅读这篇文章了解更多的classList属性。

ContextMenu API

ContextMenu API是一个非常出色的菜单API,无需重写浏览器上下文菜单即可把item添加到浏览器菜单中,非常简单、方便。

  1. <sectioncontextmenu="mymenu">
  2. <!--
  3. Forthepurposeofcleanliness,
  4. I'llputmymenuinsidetheelementthatwilluseit
  5. -->
  6. <!--addthemenu-->
  7. <menutype="context"id="mymenu">
  8. <menuitemlabel="RefreshPost"onclick="window.location.reload();"icon="/images/refresh-icon.png"></menuitem>
  9. <menulabel="Shareon..."icon="/images/share_icon.gif">
  10. <menuitemlabel="Twitter"icon="/images/twitter_icon.gif"onclick="goTo('//twitter.com/intent/tweet?text='+document.title+':'+window.location.href);"></menuitem>
  11. <menuitemlabel="Facebook"icon="/images/facebook_icon16x16.gif"onclick="goTo('//facebook.com/sharer/sharer.php?u='+window.location.href);"></menuitem>
  12. </menu>
  13. </menu>
  14. </section>

备注:最好使用JavaScript创建菜单标记,因为item的动作还是由JavaScript执行,如果JavaScript被关闭那么留一个不能执行的菜单也没用。

Element.dataset

dataset这个API可以帮助开发人员轻松获取(get)或设置(set)数据属性值:

  1. /*Assumingelement:
  2. <divid="myDiv"data-name="myDiv"data-id="myId"data-my-custom-key="Thisisthevalue"></div>
  3. */
  4. //Gettheelement
  5. varelement=document.getElementById("myDiv");
  6. //Gettheid
  7. varid=element.dataset.id;
  8. //Retrieves"data-my-custom-key"
  9. varcustomKey=element.dataset.myCustomKey;
  10. //Setsthevaluetosomethingelse
  11. element.dataset.myCustomKey="Someothervalue";
  12. //Elementbecomes:
  13. //<divid="myDiv"data-name="myDiv"data-id="myId"data-my-custom-key="Someothervalue"></div>

无需多说,和classList一样,简单有效。

window.postMessage API

IE8很早就开始支持postMessage API,它允许消息在windows和iframe之间发送:

  1. //Fromwindoworframeondomain1,sendamessagetotheiframewhichhostsanotherdomain
  2. variframeWindow=document.getElementById("iframe").contentWindow;
  3. iframeWindow.postMessage("Hellofromthefirstwindow!");
  4. //Frominsidetheiframeondifferenthost,receivemessage
  5. window.addEventListener("message",function(event){
  6. //Makesurewetrustthesendingdomain
  7. if(event.origin=="http://davidwalsh.name"){
  8. //Logoutthemessage
  9. console.log(event.data);
  10. //Sendamessageback
  11. event.source.postMessage("Helloback!");
  12. }
  13. ]);

消息只能是字符串类型,使用JSON.stringify和JSON.parse可以解析更多有意义的数据。

autofocus Attribute

当页面完成时,autofocus(自动对焦)属性可以帮助一个给定的Button、Input或TextArea元素自动获取焦点。

  1. <inputautofocus="autofocus"/>
  2. <buttonautofocus="autofocus">Hi!</button>
  3. <textareaautofocus="autofocus"></textarea>

每个浏览器会支持不同的API,所以在使用之前请认真阅读使用说明,希望能帮助你更好的使用API。

分享到:
评论

相关推荐

    你不知道的5个HTML5API

    本文将为你提供5个你所不知道的API,助你在HTML5开发这条路上走的更远。一提到HTML5,你脑海里是不是闪现这样的画面:“一大堆脱衣舞女和独角兽走进房间,然后演奏着 I’mSexyandIknowit”。产生这样的想法难道是...

    最全html5精华版官方API中文手册(值50分)

    最全html5精华版官方API中文手册(值50分),相信不用我多说大家都知道是干什么的,开发者都知道,辛苦整理的这个资源,希望大家喜欢,希望对大家有帮助,谢谢大家,请给个五星好评,谢谢啦!

    html5-apis:HTML5 Web API

    HTML5 Web API 您可能不知道的有关HTML5 Web API的示例!例子参考Web组件

    speech-recognizer:使用HTML5语音识别API的语音到文本

    使用HTML5语音识别API的语音到文本。 查看 动机 没有多少人知道浏览器中内置了一个不错的语音识别API。 也许是一些预训练的模型?RNN / LSTM体系结构? 支持不是最好的,但是嘿! 为什么不提供该功能(如果有)? ...

    你不知道的5个HTML5新功能

    当你在人群中谈论到“HTML5”,你也许会感觉到,自己像一位异域舞者或独角兽,来到屋子中间,带有明显的“我很酷,我知道它”的意味。这不能说我们虚荣,多少年来,基本的HTML API一直没有任何发展,以至于当有一个...

    HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)

    我之前给大家分享过一篇你不知道的5个HTML5新功能,目的是希望里面的提到的一些技术能帮助改进你的web应用。这里我还想分享给大家一些少有人知道的HTML5新功能,希望能对你有些用处! 一、全屏API接口 强大的全屏API...

    java-servlet-api.doc

    客户端的Session在此之前还不知道 客户端选择不加入Session,例如,如果客户端拒绝接收来自服务器的cookie 作为一个Servlet的开发者,你必须决定你的Web应用是否处理客户机不加入或不能加入Session。服务器会在Web...

    5个你不知道的HTML5的接口介绍

    2010年09月27日 翻译日期: 2013年8月7日 当人们看到或者说出HTML5这个词的时候,估计至少有一半以上的人,会联想到她既是一个性感而又充满魅力的美女,同时也是一只能把你搞得焦头烂额的独角兽,这能怪我们这些...

    Thinkphp 在api开发中异常返回依然是html的解决方式

    现在谁不开发接口的呢...TP官方也不知道为啥不添加,说好的为接口而生,我的解决方案也很简单,把系统的异常处理类复制出来,去掉模板相关,直接以json方式输出 下面是解决方案: 1:按照TP扩展异常的方式引用这个文件 ...

    angular-drag-and-drop-lists:使用HTML5拖放API对嵌套列表进行排序的Angular指令

    :尽管它似乎不支持嵌套列表( )并且不使用HTML5 Drag&Drop API(虽然取决于您的用例,这可能是一件好事,但它似乎不支持嵌套功能):很多功能并得到了很好的支持) 让我知道是否还有其他应在此处添加的库。 ...

    HTML5如何用window.postMessage在网页间传递数据

    估计很少人知道HTML5 APIS里有一个window.postMessage API。window.postMessage的功能是允许程序员跨域在两个窗口/frames间发送数据信息。基本上,它就像是跨域的AJAX,但不是浏览器跟服务器之间交互,而是在两个...

    HTML5实现Notification API桌面通知功能

    这种方式有个弊端就是:当我在使用京东 进行购物的时候,我是不知道人人网有消息推送过来给我的,而必须要等我把当前页面切到人人网才知道有消息推送了。这种方式的消息推送它是基于页面存活的, 但是我们需要这么一...

    HTML5地理定位与第三方工具百度地图的应用

    前言:看到了很多技术大牛和相关博客,很少关于HTML5的地理定位的描述,不知道他们是不愿意提及还是使用的少的原因,我个人按一点点经验总结了两方面原因:第一、服务商方面的原因,因为HTML5的定位是由google提供的...

    HTML5设计原理

    今天我想跟大家谈一谈HTML5的设计。主要分两个方面:一方面,当然了,就是HTML5。我可以站在这儿只讲HTML5,但我并不打算这样做,因为...这话听起来有点搞笑:这会子你一直在说HTML5,难道我们还不知道什么是HTML5吗

    html5设计原理(推荐收藏)

    这话听起来有点搞笑:这会子你一直在说HTML5,难道我们还不知道什么是HTML5吗?大家知道,有一个规范,它的名字叫HTML5。我所说的HTML5,指的就是这个规范。但问题是,有些人所说的HTML5,指的不仅仅是这个规范,...

    ng-image-compress:在客户端使用 angularjs 压缩 jpeg 或 png 文件 - 使用 HTML5 Canvas & File API(基于 github 上的 JIC 项目)

    它使用 HTML5 Canvas & File API。 压缩算法基于 github 上的 JIC 项目。 有一个来自 mischi 包的旧 angularjs-imageupload-directive 声称可以进行图像压缩,但不知何故它压缩图像的效果几乎不如 JIC 项目。 因此...

    如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)

    * 前端需要开启history模式,而后端根据url并不知道前端在请求api还是在请求页面,如localhost:4200/home这种url,前端理所当然认为“我需要得到html,并跳转到首页”,然而后端并不能区分。 * 因此需要一种判断...

    HTML5离线应用与客户端存储的实现

    支持离线 Web 应用开发是 HTML5 的另一个重点。所谓离线 Web 应用,就是在设备不能上网的情况...要知道设备是否在线还是离线,HTML5 定义了一个 navigator.onLine 属性,这个属性值为 true 表示设备能上网,值为 false

Global site tag (gtag.js) - Google Analytics