WAD-B202 如何快速提升网站兼容性和 Windows 10 Web 平台的发展

杨滔/闫伟

. . .

. . . Windows 10 中的Web平台

Edge浏览器 25年 440亿  快速询问Cortana功能

 阅读模式

 笔记模式

 分享功能 JetStream Benchmark Octane 2.0 Benchmark 160 (higher is better) 25000 (higher is better)

140 20000 120

100 15000 80

60 10000

40 5000 20

0 0 1 2 3 4 1 2 3 4

• 卸下兼容老版IE的包袱

• 网站开发者只需针对同 一个版本进行开发,节 省开发时间成本

• 网站更好地运行 1995 2015

1 2 3 4 4.x 5 5.5 6 7 8 9 10 11

Trident HTML4, ES3, CSS2

1995 2015

1 2 3 4 4.x 5 5.5 6 7 8 9 10 11

Trident

!DOCTYPE Quirks Strict HTML4, ES3, CSS2 CSS2.1

1995 2015

1 2 3 4 4.x 5 5.5 6 7 8 9 10 11

Trident

!DOCTYPE x-ua-compatible IE5 IE7 IE8 Compatibility Standards Quirks View Mode

HTML4, ES3, CSS2 CSS2.1 HTML5, SVG, ES5

1995 2015

1 2 3 4 4.x 5 5.5 6 7 8 9 10 11

Trident

IE5 IE7 IE8 Compatibility Standards !DOCTYPE Quirks View Mode x-ua-compatible

IE9 Standards Mode

HTML4, ES3, CSS2 CSS2.1 HTML5, SVG, ES5, CSS3

1995 2015

1 2 3 4 4.x 5 5.5 6 7 8 9 10 11

Trident

IE5 IE7 IE8 Compatibility Standards !DOCTYPE Quirks View Mode x-ua-compatible

IE9 QME IE10 Standards Quirks Mode Standards Mode Emulation Mode

Legacy Web Modern Web HTML4, ES3, CSS2 CSS2.1 HTML5, SVG, ES5, CSS3

1995 2015

1 2 3 4 4.x 5 5.5 6 7 8 9 10 11

Trident

IE5 IE7 IE8 EMIE Quirks Compat Standards Enterprise !DOCTYPE View Mode Mode x-ua-compatible

IE9 IE10 QME IE11 Quirks Standards Standards Standards Mode Mode Mode Mode Emulation EdgeHTML Chakra EdgeHTML Chakra 以前,开发者需要维护不同版本IE浏 使用兼容现代标准的渲染引擎后 览器的不同代码

浏览器请求 浏览器请求

遗留下来的 现代标准 标准 何种浏览器? EdgeHTML Webkit, Blink & Webkit, 多个版本不 Blink & code 同的代码 Gecko code Microsoft Edge

.

.

.

. .        2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020

Internet Explorer 8 9 Internet Explorer 10 Internet Explorer 11

Internet Explorer 10

Internet Explorer 11

Internet Explorer 11 Microsoft Edge

2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020

功能多 • 方便 Windows Web App 调用更多的 Windows 原生功能 • HTML5兼容性更好,支持的功能更多 速度快 • 浏览器快速迭代,持续更新 • 打开网页快,代码运行快 体验好 • 安全性好 • Windows 平台中的默认浏览器,跨设备的Web 一致体验,具有更好的兼容性 投入省 • 数10亿用户将通过 Windows update 为升级到 Windows 10 • Edge浏览器的F12开发 Windows 10 中的Web平台

Web Apps

EdgeHTML.dll Chakra

WebView

• 为iOS,安卓以及 Windows平台制作应用 • 近乎100%共享代码 • 在任何设备和模拟器上进 行调试 • 使用你喜欢的JS框架 • 支持离线模式

WebView . . . .

Microsoft Edge

将你的开发网站的经验带入Windows商店 中

平衡网站的投入和开发人员的工作流程

可以获得全部通用API的权限,如磁贴、 通知、相机、通讯录以及日历等

Web 兼容性和兼容性测试

关键因素 问题原因 解决方案

标准模式 请使用 HTML5 通用标签“”声明编写指令, 网页在Edge模式下进行渲染错误,原因可能是该页面没有使 Web standards 并删除IE兼容性标签"http-equiv"例如:"”标签声明编写指令 docmode equiv="x-ua-compatible" content="IE=*">"

框架和类库 网页是基于一些三方框架或类库进行搭建的,但是由于当前 Frameworks & 请您更新网站正在使用的框架和类库 使用的版本过于陈旧,从而出现一些问题 libraries

浏览器前缀 网页正在使用浏览器前缀技术,以保证页面的跨平台体验效 请您尝试将 -ms- 浏览器前缀与其他浏览器前缀同时加入 CSS prefixes 果,例如:-webkit- 和 -moz- 但是并不包含-ms-前缀 CSS代码中,这样做不会影响页面渲染和加载速度

浏览器检测 网页正在使用 userAgent 判断浏览器类型,进而选择性的展 您只需将类似“navigator.userAgent;”的UA判断代码替换成 Browser detection 示功能 功能检测代码 例如:modernizr

浏览器插件 建议您采用 无插件浏览体验 标准,页面将支持更多设备以 Legacy plug-ins and 网页正在使用Adobe Flash 和 PDF 以外的浏览器插件 及浏览器 features

Windows Edge 兼容性测试工具 详细修改建议和方案请参考

http://dev.modern.ie/tools/staticscan/ http://aka.ms/edge-dev .

.

.

 .

. .

//正确示范,推荐做法 //错误示范,极不推荐

function load() { if (navigator.userAgent.indexOf("MSIE 7") > -1) { if ('localStorage' in window) { // Only for IE7 // Now use local storage } return; } }

.

if (Modernizr.csstransitions) { // Browser supports CSS Transitions } if (!Modernizr.canvas) { loadCanvasPolyfill(); } .

.

.

. 功能 基于插件的技术示例 基于标准的等效技术 详细信息 Flash、Apple 视频和音频 HTML5 视频 和音频 视频、 音频 QuickTime、Silverlight HTML5 Canvas 、可 缩放的向量图形 Flash、Apple Canvas、SVG、过渡、 (SVG)、级联样式表 图形 QuickTime、Silverlight 动画、转换、 级别 3 (CSS3) 过 、Java 小程序 WebGL 渡 和动画、CSS 转 换、WebGL Web 存储、文件 API Web 存储、文件 API Flash、Java 小程序和 脱机存储 、IndexedDB 和应 、IndexedDB 和应 Google Gears 用程序缓存 API 用程序缓存 API HTML5 Web 消息传 网络通信、资源 通道消息传递、 Flash 和 Java 小程序 递和跨源资源共享 共享和文件上载 XMLHttpRequest (CORS)

Edge浏览器不支持出Adobe Reader和 Flash 以外的插件 关键因素 问题原因 解决方案

标准模式 请使用 HTML5 通用标签“”声明编写指令, 网页在Edge模式下进行渲染错误,原因可能是该页面没有使 Web standards 并删除IE兼容性标签"http-equiv"例如:"”标签声明编写指令 docmode equiv="x-ua-compatible" content="IE=*">"

框架和类库 网页是基于一些三方框架或类库进行搭建的,但是由于当前 Frameworks & 请您更新网站正在使用的框架和类库 使用的版本过于陈旧,从而出现一些问题 libraries

浏览器前缀 网页正在使用浏览器前缀技术,以保证页面的跨平台体验效 请您尝试将 -ms- 浏览器前缀与其他浏览器前缀同时加入 CSS prefixes 果,例如:-webkit- 和 -moz- 但是并不包含-ms-前缀 CSS代码中,这样做不会影响页面渲染和加载速度

浏览器检测 网页正在使用 userAgent 判断浏览器类型,进而选择性的展 您只需将类似“navigator.userAgent;”的UA判断代码替换成 Browser detection 示功能 功能检测代码 例如:modernizr

浏览器插件 建议您采用 无插件浏览体验 标准,页面将支持更多设备以 Legacy plug-ins and 网页正在使用Adobe Flash 和 PDF 以外的浏览器插件 及浏览器 features

Windows Edge 兼容性测试工具 详细修改建议和方案请参考

http://dev.modern.ie/tools/staticscan/ http://aka.ms/edge-dev 相关资源

. . . . . https://channel9.msdn.com/Events/Ignite/ Microsoft-Ignite-China-2015 http://aka.ms/IgniteChina2015 .

.

Mozilla/5.0 (Windows NT 10.0; WOW64; rv:35.0) Gecko/20100101 /35.0

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.1.25 (KHTML, like Gecko) Version/8.0 /600.1.25

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0