最近刷微博刷得有点过了,以至于我只想到这个标题。

今晚一直在看IE Blog,发现了很多关于IE10的新特性介绍,而且有些特性还是挺激动人心的。

我以为,IE10比IE9更具革命性,毕竟IE10是仗依着即将发布的Window8和Window Phone两个重要操作系统出来混的。

之前一直很少会关心IE浏览器,但是我一想到如今移动端对HTML5,CSS3给力支持的如此动人的景象,可能以后会被Window Phone的IE10捣乱,心怀不安,于是,我怀着忧国忧民的心情研究了一下IE10对HTML5的支持,现在汇报如下。

另外,需要说明的是,现在浏览器更新节奏比较快,所以要具体说明一下,如无特别注明,本文的IE10指的是IE10 Preview2 or above.

HTML5语法解析

HTML5第一次把语法解析规则也作为一项规范,其目标是保证HTML在所有的现代浏览器里得到一致的解析,IE团队在这项工作中下了很大的功夫,使得IE10上能很好的支持HTML5解析算法。

正确语法解析

对于正确解析合法有效的标签,IE9已经表示无鸭梨了。

IE10的二逼之处在于,即使是不合法的标签,它依然会按照HTML5定义的规则来解析,下面的例子说明了对于非法标签的一些修复办法:

HTML

DOM ( HTML5 + IE10 )

DOM ( IE9 )

12

|- |- "1"

|- |- "2"

|- |- "1"

|- |- "2"

|-

Test 1

Test 2

|-

|- "Test 1\n"

|- |- "\n "

|-

|- "Test 2\n"

|-

|- "Test 1\n"

|- |- "\n "

|-

|- "Test 2\n"

使用innerHTML互操作

我们知道,在以往的IE上,某些标签的innerHTML属性不能重写;终于,IE10让它们重见天日了。

var select = document.createElement("select");

select.innerHTML = "onetwo";

var table = document.createElement("table");

table.innerHTML = "

onetwo";

移除遗留的特性

因为IE早前的一些版本中的一些特性和HTML5语法解析不兼容,所以在IE10模式中,它们已经被移除掉了。依赖与这些特性的网站将会在旧模式中继续被支持。而这些移除的特性包括:

Same Markup: Writing Cross-Browser Code

在IE10和其他浏览器中,这会被解析为未知元素

而在老版本IE中,它会与 "my.htc"绑定

在IE10和其他浏览器中,这会被解析为HTML

而在老版本IE中,这回被解析为XML.

Page Visibility

这个HTML5特性可能很少人听说,毕竟目前只有IE10和Chrome13及以上版本的浏览器支持。但是,这个API很有用,它可以用来判断用户是否正在浏览当前页面。在一些需要经常轮询的网站,可以通过判断用户是在浏览还是在挂页面来决定轮询频率,这样可以提高性能和节约带宽。

具体地说,它包括两个属性和一个事件:

document.hidden: 返回一个布尔值表示页面是否可见

document.visibilityState: 返回一个可视状态值, 例如, PAGE_VISIBLE, PAGE_PREVIEW等.

visibilitychange: 可视状态改变会触发的事件.

在IE10中使用,需要在属性前面加上前缀"ms"。这里有一个官方的Demo,可以更清楚地告诉你这个API的作用。

Sandbox属性

HTML5新属性Sandbox让开发者可以限制iframe页面的行为权限。使用方法很简单,只需要在iframe元素里面加入sandbox属性即可。

加上这个属性之后,iframe里面的内容就会被禁用以下功能:

实例化插件

执行脚本

打开弹出窗口

提交表单

访问本地存储(包括localStorage,sessionStorage,cookies等)

发送XMLHttpRequests请求

访问父级Dom

使用HTC

这堆限制基本把iframe降级到脑残水平了,如果你想还它一点智商的话,可以把允许项作为sandbox属性的值来实现,下面例子解除了对脚本和表单提交的禁用。

当下网页经常要用到各种mash-up,这固然便于站点间的数据交互,但同时也有很多安全隐患,特别是跨站点脚本攻击(XXS),用户体验劫持(user experience hijacking)等,sandbox出现让我们通过使用iframe作为沙箱容器,为用户提供安全的网页环境。这里有几个模拟的案例,可供参考。

Pointer和Gestures事件

用过Window8的童鞋都知道,Metro界面提供了全新的一流的触摸用户体验。在IE10和Metro App中,开发者可以使用一种更通用的输入形式,我们叫作“Pointer”。Pointer可以表示任何一个在屏幕中的点,这个点可以是一个鼠标指针,手写笔,一支手指或者多个手指。这个模型让我们在写网页和App的时候更加爽,无需考虑用户在使用PC,Pad还是手机。

Pointer事件

和鼠标事件类似,pointer事件会在点击,移动,释放,移进,移出的时候触发:

MSPointerDown

MSPointerMove

MSPointerUp

MSPointerOver

MSPointerOut

与鼠标不同的是,它可能在屏幕上有同时有多个点,例如,在多点触控的设备。这种情况下,多个独立的pointer事件会被触发,对应着屏幕的每一个点。当我们要对单独一个点进行处理,可以通过调用event.getPointerList()获得包含所有pointer的一个数组。

兼容鼠标

当触发pointer事件之后,IE10也会触发鼠标事件。这保证了在不支持Pointer事件的IE浏览器中,网页依然可以兼容。

当然,如果需要,我们也可以在MSPoniterDown事件方法中调用event.preventMouseEvent()来阻止鼠标事件触发。

特性检测

检测Poniter支持情况建议如下:

If (window.navigator.msPointerEnabled) {

//Pointer events are supported.

}

下面再看一个例子:

优化触控的一般方法

跟很多其他系统平台一样,IE10对于基本的触控交互提供了相对应的默认处理方法,譬如:

在可滚动区域按住可以移动内容

双指捏张可以缩放

点击,Hold住会出现菜单

轻触文本,可以选中

这些功能可以让网页和App提高触控体验,不过,有时候我们要禁用它们,以便实现我们自己的功能效果或者特别的用户体验。

下面是各种情况的禁用办法:

平移和缩放

.disablePanZoom {

overflow: hidden; /* 禁用平移 */

-ms-content-zooming: none; /* 禁用缩放 */

}

快捷菜单

element.addEventListener("MSGestureHold", function(e) { e.preventDefault(); }, false);

//禁止菜单显示

element.addEventListener("contextmenu", function(e) { e.preventDefault(); }, false);

//禁用菜单

轻触选中

element.addEventListener("selectstart", function(e) { e.preventDefault(); }, false);

//禁用选中

Gesture事件

除了Pointer事件之外,IE10还可以识别复杂的交互(譬如,捏放,猛击,旋转等等)。这些交互动作都会被描述为手势事件。最基本的两个静态手势有:

MSGestureTap

MSGestureDoubleTap

MSGestureHold

更加复杂的手势,可以通过MSGestureStart, MSGestureChange和 MSGestureEnd事件来完成。这些事件包含了手势变换的信息,例如,移动,放大,旋转,加速率等。下面例子可以说明:

document.addEventListener("MSGestureChange",logGesture,false);

var log = document.getElementById("log");

function logGesture(event) {

var gesture = "Translation: " + event.translationX + "px, " + event.translationY + "px

";

gesture += "Scale: " + event.scale + "x

";

gesture += "Rotation: " + event.rotation*360/Math.PI + " deg

";

gesture += "Velocity: " + event.velocityX + ", " + event.velocityY;

log.innerHTML = gesture;

}

Others

上面几个算是我感觉比较新颖的特性了,所以简单介绍了一下,虽然介绍介绍着变成了翻译...

除了上面说的这些,IE10还支持很多HTML5特性,但是大部分都已经妇孺皆知了,在这里就也不炒冷饭。不过,真的值得赞赏的是,IE10的确非常接近标准,无论是HTML5,CSS3的支持,还是ECMAScript5的实现,还是和Window 8 ,Window Phone系统的整合,都有了很大的进步。

想了解更多的童鞋可以参考下面三个网站,其中Internet Explorer 10 Guide for Developers是介绍IE10新特性的,但这比很多HTML5,CSS3教程对它们的描述还要完整和全面,IE10的确很给力。

参考资料

IE Blog

Internet Explorer 10 Guide for Developers

Windows Internet Explorer Testing Center

via:vinqon

html5 sandbox,”基情“无限的IE10和HTML5相关推荐

  1. rowid会变化么_基情满满!美团amp;饿了么外卖小哥组CP出道

    这几天,如果你有点外卖的经历,就会发现一些外卖小哥头上的帽子有了新变化.美团外卖小哥头上的黄色帽子上多了一双耳朵,有网友说是兔子耳朵,但美团官方很快解释称,这其实是袋鼠耳朵,因为美团的logo就是一个 ...

  2. 贝塞尔曲线与CSS3动画、SVG和canvas的基情

    一.甚忙,短言之 最近谷歌那谁谁因为自己的相好被老大抢了,就去小米了!狗血的三角关系要比烂掉的TVB神剧好看多了. 但这只是小菜,贝塞尔曲线才是很角色,因为有外国血统,因此,和CSS3动画.SVG以及 ...

  3. python统计小说人物_Python数据分析之基情的择天记

    人一生都可能无法逆天改命,但你却是要去奋斗一把 本文章主要通过最简单的共线性关系,利用gephi工具绘制择天记的人物关系图. 准备工作在网上下载<择天记>小说以及创建小说人物的txt. j ...

  4. html兼容webki,评IE10对HTML5的完美支持

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 近期Windows 8的消息充斥着整个网络.微软将IE10集成在系统中,并且宣称IE10会很好的支持HTML5.本文是对IE10支持HTML5的研究报告. ...

  5. 一个八卦的AI,嗅到了你和TA之间基情满满

    郭一璞 发自 凹非寺  量子位 报道 | 公众号 QbitAI 人类,天生就有八卦嗅觉. 比如匡扶正义的侦探组合:  就非要YY成CP. 明明是亚瑟王和梅林大法师的中古传奇:  还是要YY成忠 ...

  6. 手Q浏览器与UC的5年基情 2015恐生变

    互联网行业时不时地上演撕逼大战,而撕逼的背后或许是真爱,手Q浏览器一经出世就与UC之间纠缠不清.而UC十年中,前五年孤傲的没有小伙伴,而后5年则是与手Q浏览器共同经历基情燃烧的岁月.进入2015年,双 ...

  7. 一年不见,基情未减——桂林电子科技大学一日游

    一年不见,基情未减--桂林电子科技大学一日游 前言 我朋友在桂林电子科技大学读材料专业,我在成都读计算机.我们相隔上千公里,每年只有寒暑假才能有机会见几次面.原本我以为即使隔着上万公里,我们之间的感情 ...

  8. 谷歌基情实录:和Jeff Dean在同一台电脑上写代码

    大数据文摘出品 编译:DonFJ.周家乐.李雷.小七.胡笳.jin.钱天培 单丝不成线,孤木不成林,浑身是铁也打不成几根钉子. 谷歌的伟大有一多半要归功于公司中亲密无间.协同工作的程序猿们!向伟大的猿 ...

  9. ie10兼容html5,评IE10对HTML5的完美支持

    Windows8 Web平台 在我们进入Win8和IE10对HTML5的支持细节之前,很值得回顾一下Windows8的一些概要.Windows8代表微软在策略上的一个大 的转变,因为它使得Web技术成 ...

最新文章

  1. 怎样创造计算机语言,如何创建编译成JavaScript的编程语言
  2. 大工18秋c c 语言程序设计,大工19秋《可编程控制器》在线作业3【满分答案】
  3. 电脑安装python步骤-windows10系统安装python的详细步骤
  4. 迷你世界支持服务器,迷你世界云服务器
  5. 【转】DCT变换的透彻解析
  6. OpenGL ES入门
  7. 解决eclipse刚启动卡死的问题~~~亲测有效~~
  8. spring boot mybatisplus集成_spring-boot系列之集成测试
  9. 两直线平行交叉相乘_直线与方程概论
  10. PostgreSQL and SQLAlchemy [ubuntu]
  11. 在 .NET Framework Data Provider for Microsoft SQL Server Compact 3.5 中发生错误
  12. Linux虚拟机下mysql 5.7安装配置方法图文教程
  13. 《高效团队开发:工具与方法》
  14. yii验证在一个数组内_PHP实现一个轻量级容器
  15. 用html布局象棋棋盘,5分钟掌握22种常见象棋布局,实例演示象棋布局大全、开局大全...
  16. TS:声明合并de妙处
  17. Cocos技术派 | TS版属性声明详解
  18. 如何在linux下安装一个音乐播放器
  19. 前端学习图谱与新奇趣玩之前端Q直播回顾
  20. sybase ASE在unixlinux上的自动备份脚本

热门文章

  1. JSON是什么?对JSON的简单理解
  2. 读书笔记----10日摘抄整理(12)
  3. 前端通过后端返回文件流下载文件
  4. java农夫过河_C语言实现农夫过河代码及解析
  5. pycharm设置文件模板
  6. 点歌服务器定时关闭系统,iOS 基础教程:设置系统自带的睡眠计时器,定时关闭音乐播放...
  7. CTF学习-密码学解题思路
  8. 探讨顶级 Layer 1 智能合约区块链的代币经济学
  9. 智能音箱大战全面开火,那么问题来了:如何成为一名全栈语音识别工程师?
  10. BZOJ3118 : Orz the MST(对偶费用流)