Top Banner
Cross Browser Best Practices Best practices for same markup Pete LePage, Sr. Product Manager, Microsoft Corp http://petelepage.com/blog/ | @petele
60

Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

May 01, 2018

Download

Documents

dokiet
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Cross Browser Best Practices

Best practices for same markup

Pete LePage, Sr. Product Manager, Microsoft Corp

http://petelepage.com/blog/ | @petele

Page 2: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Agenda

Cross-Browser Challenges

Cross-Browser DOs

Cross-Browser DON'Ts

Page 3: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Cross-Browser Challenges

New versions released frequently

Many different versions

Many different browsers

Page 4: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

CSS3 2D Transforms

Demo

Page 5: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Categorizing features in the web platform

Same Markup

Interoperable & Stable

• Supported in all the latest browsers; not likely to change in the future

Legacy

• Replaced by interoperable features; May be removed in the future

New

• Supported in some browsers; Inconsistent implementations

Page 6: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Defining Same Markup

Page 7: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Building A Test Suite

PAGE 7

Page 8: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

W3C HTML5 Test Suite

Demo

Page 9: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

What matters most is detection…

If (condition){

// Primary code}else{

// Alternate code}

Page 10: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

First we had version detection…

If (navigator.userAgent.indexOf('MSIE') != -1){

// Code written for browser X}else{

// Code written for browser Y}

Page 11: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Then we had object detection…

If (document.all){

// Code written for browser X}else{

// Code written for browser Y}

Page 12: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Now we have feature detection…

if (window.addEventListener){

// Code written for browsers// supporting addEventListener

}else{

// Code written for browsers that// don't support addEventListener

}

Page 13: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Best Practices

DO: Feature Detection Behavior Detection

DON'T: Detect Specific Browsers

Assume Unrelated Features

IMPACT: Reduced Maintenance Cost

Page 14: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

DO: Feature Detection

Test for a feature before using it Key for newer features Not as critical for well-established features

Test for standards first Always use standards when supported

Avoid accidentally using legacy functionality

Page 15: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

DO: Feature Detection

window.addEventListener("load", fn, false);

Page 16: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

DO: Feature Detection

if (window.addEventListener){

window.addEventListener("load", fn, false);}

Page 17: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

DO: Feature Detection

if (window.addEventListener){

window.addEventListener("load", fn, false);}else if (window.attachEvent){

window.attachEvent("onload", fn);}

Page 18: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

W3C Event APIs

Presenter

Presenter Title

Demo

Page 19: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

DO: Behavior Detection

Problem A browser has a bug in a feature Basic feature detection fails to identify the

issue

Solution Run a test to detect the broken behavior

Apply a workaround when the broken

behavior is detected

Page 20: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

DO: Behavior Detection

// Run a test that targets a known issuevar testPassed = runTest();

// Check if the test passedif(!testPassed){

// If not, apply a workaround}

Page 21: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

getElementById

Demo

Page 22: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Code Path Comparison

= Detection Point = Alternate Code

Feature DetectionVersion Detection

Page 23: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

DON'T: Detect Specific Browsers

"But I know this feature works in that browser!" The feature may also work in other browsers New browsers may add support for the feature

"But I know this feature has a bug in that

browser!" The same bug may also exist in other browsers

The bug may (or may not) be fixed in the next version

Cost Risk of breaking when new browsers are released

Page 24: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Feature Detection vs. Browser Detection

= Detection Point = Alternate Code

Feature DetectionBrowser Detection

Page 25: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

DON'T: Detect Specific Browsers

// Using the User Agent String

if( navigator.userAgent.indexOf(x) != -1 ){

// Browser-specific code

}

Page 26: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

DON'T: Detect Specific Browsers

// Using Objects

if( document.all ){

// Browser-specific code

}

Page 27: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

DON'T: Detect Specific Browsers

// Using Library-based Detection

if( jQuery.browser.msie ){

// Browser-specific code}

Page 28: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

DON'T: Detect Specific Browsers

// Using Conditional Comments

<!--[if IE]>

// Browser-specific code

<[endif]-->

Page 29: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Really?

PAGE 29

Page 30: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

DON'T: Assume Unrelated Features

"But I know all browsers with X also have Y!" New browsers may have X and not Y

Cost Risk of breaking when new browsers are released

Page 31: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

DON'T: Assume Unrelated Features

if( window.postMessage ){

window.addEventListener();

}

Page 32: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Why doesn't everyone do this already?

Easier to think of

browsers

…but remember the cost

Page 33: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Feature Detection Beyond Script…

Do

Page 34: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

DO: Feature Detection

.target{

border-radius: 20px;-moz-border-radius: 20px;-webkit-border-radius: 20px;

}

Page 35: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

DO: Feature Detection

<!-- Elements with fallback content -->

<video src="test.mp4"><source src="test.ogg">

<a href="test.mp4">Download Video

</a></object>

</video>

Page 36: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

DO: Feature Detection

try {var v = document.createElement("video");if (v && v.canPlayType && v.canPlayType("video/mp4").match(/^(probably|maybe)$/i)) {// Browser can likely play MPEG-4 video

}else {// Browser cannot play MPEG-4 video

}}catch (e) { // Exception thown }

Page 37: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

DO: Feature Detection

<!-- Generic element handling -->

<svg width="100" height="100"><circle fill="#090" cx="50" cy="50" r="50"/>

</svg>

Page 38: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

SVG in HTML5

Demo

Page 39: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Helpful Libraries

Page 40: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Modernizr

PAGE 40

Page 41: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Modernizr with JavaScript

if (Modernizr.localstorage) { // Yay – use local storage persistent

} else {// Boo! Resort to cookies as best you can

}

if (Modernizr.svg) { // SVG is supported natively

} else { // kick off flash fallback

}

Page 42: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Modernizr with CSS

.my_container { background-color: #ccc; color: #222;

}

.rgba .my_container { background-color: rgba(255,255,255, .5);

}

Page 43: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Video For Everybody!

PAGE 43

Page 44: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Fallback With <video>

<video src="video.mp4"><source src="video.ogv" /><source src="video.webm" /><object height="380"

type="application/x-silverlight-2" width="640"><param name="source" value="Resources/player.xap">

<param name="initParams" value="deferredLoad=true, duration=0, m=http://localhost/video.mp4, autostart=false, autohide=true, showembed=true, postid=0">

<param name="background" value="#00FFFFFF"></object>

</video>

Page 45: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

There’s always an exception…

Page 46: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Conditional Comments

// Use only to isolate legacy code

<!--[if IE lte 7]>

// Legacy browser-specific code

<[endif]-->

Page 47: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

X-UA-Compatible

<!DOCTYPE 4.01 … strict …><html>

<head><meta http-equiv="X-UA-Compatible"

content="IE=EmulateIE7;"> </head><body>

<h1>Hello Tel Aviv!</h1></body>

</html>

Page 48: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Internet Explorer 9 Document Mode

http://bit.ly/9ZjVhl

Page 49: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Testing Your Site

Page 50: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

F12 Developer ToolsTesting from Internet Explorer 9 to 7

Browser Mode Changes the rendering

engine only

Document Mode Changes the rendering

engine and user agent

string

Page 51: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

F12 Developer Tools

Demo

Page 52: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Expression Web Super Preview

PAGE 52

Page 53: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Virtualization

PAGE 53

http://bit.ly/bbcDa2

Page 54: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Summary

Page 55: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary
Page 56: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary
Page 57: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Recap

Cross-Browser Challenges

Cross-Browser DOs

Cross-Browser DON'Ts

Page 59: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

Thank you!

Questions

Page 60: Cross Browser Best Practices - dlbmodigital.microsoft.comdlbmodigital.microsoft.com/ppt/MSDN_XBrowser-Compat_PLePAge.pdf · Cross Browser Best Practices ... (condition) {// Primary

© 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Internet Explorer and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.

The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market

conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.

MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.