视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
HTML5中你不知道的5个新功能
2020-11-27 15:11:42 责编:小OO
文档

这篇文章主要为大家详细介绍了不知道的几个HTML5新功能,为大家分享出更多不为人知的HTML5 API,感兴趣的小伙伴们可以参考一下

当你在人群中谈论到“HTML5”,你也许会感觉到,自己像一位异域舞者或独角兽,来到屋子中间,带有明显的“我很酷,我知道它”的意味。这不能说我们虚荣,多少年来,基本的HTML API一直没有任何发展,以至于当有一个小的新功能出现时,例如placeholder,都会让我们露出新奇的眼神。尽管新式的浏览器中实现了很多HTML5特征,但大部分程序员仍对一些小的、非常有用的API不了解或从未听说。本文中我将介绍一些这样的API,并欢迎大家发掘出更多不为人知的HTML5 API!

Element.classList

classList API提供了我们多年来一种使用JavaScript工具库来实现的控制CSS的基本功能:

XML/HTML Code复制内容到剪贴板
// 增加一个CSS类 
myElement.classList.add("newClass"); 
 
// 删除一个CSS类 
myElement.classList.remove("existingClass"); 
 
// 检查是否拥有一个CSS类 
myElement.classList.contains("oneClass"); 
 
// 反转一个CSS类的有无 
myElement.classList.toggle("anotherClass");
  • 这个新出现的API的主要价值体现就是:简单实用。读一下这篇文章,里面介绍了其它几个classList功能特征。

    ContextMenu API

    这个新的ContextMenu API非常的有用:它并不会替换原有的右键菜单,而是将你的自定义右键菜单添加到浏览器的右键菜单里:

    XML/HTML Code复制内容到剪贴板
    <section contextmenu="mymenu"> 
     
     <!-- 添加菜单 --> 
     <menu type="context" id="mymenu"> 
     <menuitem label="Refresh Post" onclick="window.location.reload();" icon="/images/refresh-icon.png"></menuitem> 
     <menu label="Share on..." icon="/images/share_icon.gif"> 
     <menuitem label="Twitter" icon="/images/_icon.gif" 
     onclick="goTo('//.com/intent/tweet?text=' + document.title + ': ' + window.location.href);"></menuitem> 
     <menuitem label="" icon="/images/_icon16x16.gif" 
     onclick="goTo('//.com/sharer/sharer.php?u=' + window.location.href);"></menuitem> 
     </menu> 
     </menu> 
    </section>
  • 需要注意的是,最好使用JavaScript动态的创建这些菜单代码,因为菜单事件最终要调用JavaScript执行任务,如果用户禁止了JavaScript,右键菜单也不会生成,他同时也不会看到菜单。

    Element.dataset

    使用dataset API,程序员可以方便的获取或设置data-*自定义属性:

    XML/HTML Code复制内容到剪贴板
    /* 以下面的代码为例 
     
     <p id="myp" data-name="myp" data-id="myId" data-my-custom-key="This is the value"></p> 
     
    */ 
     
    // 获取元素 
    var element = document.getElementById("myp"); 
     
    // 获取id 
    var id = element.dataset.id; 
     
    // 读取 "data-my-custom-key" 的值 
    var customKey = element.dataset.myCustomKey; 
     
    // 修改成其它值 
    element.dataset.myCustomKey = "Some other value"; 
     
     // 结果是: 
     // <p id="myp" data-name="myp" data-id="myId" data-my-custom-key="Some other value"></p>
  • 无需多说,跟classList一样,简单实用

    window.postMessage API

    即使是IE8也对postMessage API支持多年了,postMessage API的功能是可以让你在两个浏览器窗口或iframe之间传递信息数据:

    JavaScript Code复制内容到剪贴板
    // 从A域上的窗口或iframe,发送一条信息到B域中的窗口或ifame 
    var iframeWindow = document.getElementById("iframe").contentWindow; 
    iframeWindow.postMessage("来自第一个窗口的问候!"); 
     
    // 在第二个不同域上的窗口或iframe接收消息 
    window.addEventListener("message", function(event) { 
     // 检验域的合法性 
     if(event.origin == "http://www.webhek.com") { 
     // 
    输出日志信息 console.log(event.data); // 反馈消息 event.source.postMessage("你也好吗!"); } ]);
  • 消息体只能是字符串,但你可以用JSON.stringify和JSON.parse将消息转换成更有意义的数据体!

    autofocus属性

    autofocus属性能够让BUTTON, INPUT, 或 TEXTAREA元素在页面加载完成时自动成为页面焦点:

    XML/HTML Code复制内容到剪贴板
    <input autofocus="autofocus" /> 
    <button autofocus="autofocus">Hi!</button> 
    <textarea autofocus="autofocus"></textarea>
  • 在像谷歌搜索页面那样的有固定模式的地方,autofocus属性是最理想的一个功能。

    浏览器对各个API的支持稍有不同,所以,在使用前先检查一下对这些特征的支持情况。再花点时间阅读一下各个API的详细说明,相信你会有更多的发现。

    下载本文
    显示全文
    专题