SlideShare ist ein Scribd-Unternehmen logo
1 von 129
Downloaden Sie, um offline zu lesen
Hell is other browsers - Sartre




State of the Browsers
             Peter-Paul Koch (ppk)
            http://quirksmode.org
            http://twitter.com/ppk
The Ajax Experience, Sept. 30, 2008
quirksmode.org
Today's topics
I'm not going to discuss many
browser incompatibilities.

That means that your favorite bug
will not be treated.

Sorry.
Today's topics
- A bit of history
- Compatibility patterns, with
  examples
- Browser detects and how to do
  them right
- A peek into the future
A bit of history
The browser market long ago


                      IE
                      -
                      NN
                      -
                      Opera
Browser Wars, 1996-1999
Browser Wars Era
A world divided

- Netscape Navigator
- MS Internet Explorer

and they were incompatible.
And when I say incompatible I
mean really, deliberately
        document.layers
incompatible




                  document.all
Browser Wars Era
- Deliberate incompatibilities

Why?
To leverage their competitor out of
the market.
Browser Wars Era
- Deliberate incompatibilities

That didn't work.

Why not?
Users don't care which
browser they're using.
If a site doesn't work they blame
the site owner.

Whether that's fair or not.
Browser Wars Era
- Deliberate incompatibilities
Browser Wars Era
- Deliberate incompatibilities
- Ideological in nature

Microsoft is Evil.
Why?
Well, just because.
Browser Wars Era
- Deliberate incompatibilities
- Ideological in nature
- Influence of web devs: zero
“Let's hope this works...”
         - some web dev guy
Nope.
Browser Wars Era
- Deliberate incompatibilities
- Ideological in nature
- Influence of web devs: zero
Why?
Because they were supposed to
choose sides and shut up.
Browser Wars Era
- Deliberate incompatibilities
- Ideological in nature
- Influence of web devs: zero
But that didn't work because users
don't care which browser they're
using.
Browser Wars Era
- Deliberate incompatibilities
- Ideological in nature
- Influence of web devs: zero
Until...
Until...
Browser Peace
IE 5.0 Windows was the first browser to
decently support the W3C DOM.

And IE5 Mac did the same for CSS1.

Back then, Microsoft deserved to win.
The browser market back then


                      IE
                      -
                      NN4
                      -
                      Opera
Browser Peace 1999-2008?
Although Microsoft deserved to win back
in 1999,
it became complacent
and didn't do anything for the next six
years.

Other browsers profited from that.
Today's browsers
- IE 7
- Firefox 3.0
- Safari 3.1
- Opera 9.5
- Chrome 0.2
When IE gets it wrong
When IE gets it wrong
<sigh />

The good news: Microsoft is
actually working on it.
Adding rules
to style sheets

styleSheet.insertRule(...);
Adding rules
to style sheets

styleSheet.addRule(...);

Fortunately, this is easily solved.
Adding rules
to style sheets

if (styleSheet.insertRule) {
   styleSheet.insertRule(...);
}
else if (styleSheet.addRule) {
   styleSheet.addRule(...);
}
Compatibility patterns
#1
IE uses a different name for
essentially the same functionality.

A simple code branch solves this
problem.
Event registration
element.addEventListener
  ('click',someFn,false);
Event registration
element.attachEvent('onclick',someFn);
Compatibility patterns
#2
Minor browsers sometimes have
to support major browsers'
proprietary stuff.
Event registration
element.attachEvent('onclick',someFn)

function someFn() {
  this.style.backgroundColor = '#ffffff';
}
Event registration
element.attachEvent('onclick',someFn)

function someFn() {
  this.style.backgroundColor = '#ffffff';
}

You expect this to refer to the clicked
element.
Event registration
element.attachEvent('onclick',someFn)

function someFn() {
  this.style.backgroundColor = '#ffffff';
}

Unfortunately this refers to the window.
Except in Opera.
Event registration
In other words:
Opera is not buggy enough.

(Plz fix. Thx.)
Compatibility patterns
#2b
Minor browsers sometimes have
to support major browsers'
proprietary stuff
and copy their bugs
Ranges
<body>
  <blockquote>
  Web developers! Web developers! Web
  developers!
  </blockquote>
  <cite>Steve Ballmer</cite>
</body>
Ranges
<body>
  <blockquote>
  Web developers! Web developers! Web
  developers!
  </blockquote>
  <cite>Steve Ballmer</cite>
</body>
Ranges
<body>
  <blockquote>
  Web developers! Web developers! Web
  developers!
  </blockquote>
  <cite>Steve Ballmer</cite>
</body>

In which nodes does the selection start
and end?
Ranges
In which nodes does the selection start
and end?

range.startContainer
range.endContainer
Ranges
In which nodes does the selection start
and end?

Not possible in IE.
(Well, OK, you could parse the HTML to
search for the selection.)
(Have fun.)
Compatibility patterns
#3
Sometimes browsers just don't
support stuff at all.

Can't be helped
except by pressuring them.
When IE gets it right
Compatibility patterns
The difference between extensions
and incompatibilities.
When IE gets it right
Microsoft extensions.

99% are boring or useless
1% are stunningly brilliant
When IE gets it right
Brilliant Microsoft extensions

- :hover
- innerHTML

Let's review a few more.
Empty text nodes
<body>
  <blockquote>
  Web developers! Web developers! Web
  developers!
  </blockquote>
  <cite>Steve Ballmer</cite>
</body>

How many children does the body have?
Empty text nodes
<body>
 One child
  <blockquote>
 Two children Web developers! Web
  Web developers!
 Three children
  developers!
  </blockquote>
 Four children
  <cite>Steve Ballmer</cite>
 Five children
</body>

How many children does the body have?
Empty text nodes
<body>
 One child
  <blockquote>
 Two children Web developers! Web
  Web developers!
 Three children
  developers!
  </blockquote>
 Four children
  <cite>Steve Ballmer</cite>
 Five children
</body>

How many children does the body have?
Empty text nodes
The first child is not the blockquote


<body>
  <blockquote>
  Web developers! Web developers! Web
  developers!
  </blockquote>
  <cite>Steve Ballmer</cite>
</body>
Empty text nodes
but the whitespace between body and
blockquote

<body>.....
....<blockquote>
    Web developers! Web developers! Web
    developers!
    </blockquote>
    <cite>Steve Ballmer</cite>
</body>
Empty text nodes
and yes, that's totally absurd.
Whitespace is unimportant in HTML.

<body>.....
....<blockquote>
    Web developers! Web developers! Web
    developers!
    </blockquote>
    <cite>Steve Ballmer</cite>
</body>
Empty text nodes
Fortunately IE gets it right. The body has
two children: the blockquote and the cite

<body>
1) <blockquote>
   Web developers! Web developers! Web
   developers!
   </blockquote>
2)<cite>Steve Ballmer</cite>
</body>
Empty text nodes
Everybody gets it wrong.

Except for IE.
Compatibility patterns
#4
Deliberate incompatibilities

are wrong

except when you're right.
Dropdown menu
You want
to know
when the
mouse
exits the
opened
submenu.
Dropdown menu
a.onmouseout
a.onmouseover
a.onmouseout
a.onmouseover
a.onmouseout
a.onmouseover
a.onmouseout
Dropdown menu
a.onmouseout    Lots of stuff!
a.onmouseover   Fun!
a.onmouseout
a.onmouseover   But has the
a.onmouseout    mouse left
a.onmouseover   the submenu
a.onmouseout    yet?
Dropdown menu
Mouseover and mouseout aren't
very developer-friendly.

That's why IE added mouseenter
and mouseleave.
Dropdown menu
You want
to know
when the
mouse
exits the
opened
submenu.
Dropdown menu
ul.onmouseenter
ul.onmouseleave
...
that's it
Dropdown menu
works better with mouseenter and
mouseleave.

IE-only.
Compatibility patterns
#5
This is a proprietary extension.

A way of saying “We think this is a
good idea”
If other browser vendors agree, it
might become part of the standard
When FF gets it wrong
When FF gets it wrong
(or at least ignores common sense)

There are a few methods and properties
that are not defined in the spec but are
nonetheless so totally useful that all
browsers support them.
Except for Firefox.
children
<body>
  <blockquote>
  Web developers! Web developers! Web
  developers!
  </blockquote>
  <cite>Steve Ballmer</cite>
</body>
children
Five children

document.body.childNodes[]
  -> 5 elements

But we're usually interested only in the
children that are elements.
children
Five children, two of which are elements

document.body.children[]
  -> 2 elements

The blockquote and the cite.
Just what we need
contains
a.onmouseout
a.onmouseover
a.onmouseout
a.onmouseover
a.onmouseout
a.onmouseover
a.onmouseout
contains
“Does the currently opened layer
contain the element the user
moused to?”

If No, the layer should close.
contains
“Does the currently opened layer
contain the element the user
moused to?”

if (!current.contains(related)) {
   current.close();
}
contains
“Does the currently opened layer
contain the element the user
moused to?”

if (!current.contains(related)) {
   current.close();
}
Compatibility patterns
#5b
These are also proprietary
extensions.

If they're a really good idea, all
browsers should support them.
(And FF 3.1 is.)
Compatibility patterns
IE is not the only browser to
refuse to support useful stuff for
years on end.
Browser incompatibilities will
remain a fact of life for the near
future.

That means we need to know
which browsers visit our sites.
Browser detects

      are evil
   most of the time
  (you knew that, didn't you?)
Browser detects
1) To gather stats about browser use on
   your site.


2) To take application decisions.
Browser detects
1) To gather stats about browser use on
   your site.
   GOOD.

2) To take application decisions.
Browser detects
1) To gather stats about browser use on
   your site.


2) To take application decisions.
   EVIL
   (most of the time)
The problem
Once upon a time there were Mosaic and
Netscape.

Now Netscape could do nifty stuff.
- cookies
- <center>
The problem
Once upon a time there were Mosaic and
Netscape.

Both sent a userAgent HTTP header
back to the server.

(JavaScript: navigator.userAgent)
The problem
<% if userAgent.contains('Mozilla') %>
 <H1>
  <CENTER>
     Hello, <% cookie.name %>!
  </H1>
 </CENTER>
<% else %>
  <H1>
   You're really UNCOOL, you know?
  </H1>
<% endif %>
The problem
Then came IE
It wanted to end up on the right side of
those browser detects.

Mozilla/3.0 (compatible; MSIE
yadda yadda yadda)
The problem
Then came IE
It wanted to end up on the right side of
those browser detects.

Mozilla/3.0 (compatible; MSIE
yadda yadda yadda)

It disguised itself as Netscape.
By the time the Browser Wars
ended
By the time the the Browser Wars
ended

many web developers had decided
to support only IE.

In retrospect, a sensible decision,
given its market share and
development ease.
By the time the the Browser Wars
ended

many web developers had decided
to support only IE.
if (userAgent.contains('MSIE')) {
  <H1>Welcome</H1>
} else {
  redirect('wrongbrowser.html')
}
But Opera could handle most of
those sites

So what did Opera do?

It hid its identity.
(More correctly: it allowed users to select a
different identity.)
Identify as Opera:
Opera/9.26 (Windows NT 5.1; U; en)

Identify as IE:
Mozilla/4.0 (compatible; MSIE 6.0;
Windows NT 5.1; en) Opera 9.26

Mask as IE:
Mozilla/4.0 (compatible; MSIE 6.0;
Windows NT 5.1; en)
Identify as Opera:
Opera/9.26 (Windows NT 5.1; U; en)

Identify as IE:
Mozilla/4.0 (compatible; MSIE 6.0;
Windows NT 5.1; en) Opera 9.26

Mask as IE:
Mozilla/4.0 (compatible; MSIE 6.0;
Windows NT 5.1; en) ...
Browser detects
Browsers commonly lie about
their identity

in order to bypass browser detects
written by clueless web developers

That's OUR fault.
Browser detects
Browsers commonly lie about
their identity
     navigator.userAgent is
             unreliable
in order to bypass browser detects
written by clueless web developers

That's OUR fault.
Doing it right
1) Use a property meant for identification

such as window.opera
or IE conditional comments
Doing it right
1) Use a property meant for identification

2) Use navigator.vendor

It does not lie.
Yet.
Doing it right
1) Use a property meant for identification

2) Use navigator.vendor

3) Use navigator.userAgent
   and first detect the minor browsers
   Resolve FF/IE only when you're
   certain that it's no other browser
Doing it right
1) Use a property meant for identification

2) Use navigator.vendor

3) Use navigator.userAgent
Doing it right
1) Use a property meant for identification

2) Use navigator.vendor

3) Use navigator.userAgent

The first two steps can only be done in
JavaScript.
Doing it right
1) Use a property meant for identification

2) Use navigator.vendor

A JavaScript browser detect is
more trustworthy than a server
side one.
What's next?
IE, Firefox, Safari, Opera
Now Chrome

A shake-up is inevitable.
Browser Wars II, 2008-?
A world divided?
- Deliberate incompatibilities
- Ideological in nature
- Influence of web devs: zero
A world divided?
- Deliberate incompatibilities
- Ideological in nature
- Influence of web devs: zero
A world divided?
- Deliberate incompatibilities
- Ideological in nature
- Influence of web devs: some
A world divided?
- Deliberate incompatibilities
- Ideological in nature
- Influence of web devs: some
Ideology
Microsoft is Evil.

Yawn.
Go to war again?

To defeat
the Evil
Empire?
Go to war again?

Or
to gain status
and nice
medals?
Or maybe...
not go to war at all ... ?
Go to war again?
The only reason would be to
influence changes in the browser
market.

But can we?
And if we can, should we?
The current browser market


                      IE
                      Chrome
                      FF
                      Safari
                      Opera
The future browser market?


                      IE
                      Chrome
                      FF
                      Safari
                      Opera
New fronts: Mobile
New fronts: Mobile
iPhone
Opera Mini
Opera Mobile
Windows Mobile
Google Android
...
New fronts: Mobile
Will browser quality play a role in
consumers' choice for a mobile
device?

I doubt it.
A quote from
Nate Koechley

“Why do we need
more than one
browser?”
Seriously, though.
“Why do we need
more than one
browser?”
Our answer:
Competition, which
fosters innovation.
Competition, which fosters
innovation.

Is that good enough?
Good enough to force countless
web developers to spend
thousands of hours on solving
browser incompatibilities?
“Why do we need
      more than one
       browser?”
If you have an answer, let me know.
To wrap it up
Browsers will continue to move towards
each other in terms of compatibility.

The browser market is going to change
rapidly over the next year or so.

Maybe there'll be another browser war. I
hope not, though.
Thank you
Questions?
The Ajax Experience: State Of The Browsers
The Ajax Experience: State Of The Browsers
The Ajax Experience: State Of The Browsers

Weitere ähnliche Inhalte

Was ist angesagt?

"Probably, Maybe, No: The State of HTML5 Audio" - Scott Schiller
"Probably, Maybe, No: The State of HTML5 Audio" - Scott Schiller"Probably, Maybe, No: The State of HTML5 Audio" - Scott Schiller
"Probably, Maybe, No: The State of HTML5 Audio" - Scott Schillerscottschiller
 
Api anti patterns
Api anti patternsApi anti patterns
Api anti patternsMike Pearce
 
Prebrowsing - Velocity NY 2013
Prebrowsing - Velocity NY 2013Prebrowsing - Velocity NY 2013
Prebrowsing - Velocity NY 2013Steve Souders
 
HTML5@电子商务.com
HTML5@电子商务.comHTML5@电子商务.com
HTML5@电子商务.comkaven yan
 
Engineering culture
Engineering cultureEngineering culture
Engineering culturePamela Fox
 
Joomla 1, Joomla 2, Joomla 3 (Joomla Versions Explained)
Joomla 1, Joomla 2, Joomla 3 (Joomla Versions Explained)Joomla 1, Joomla 2, Joomla 3 (Joomla Versions Explained)
Joomla 1, Joomla 2, Joomla 3 (Joomla Versions Explained)Sander Potjer
 
JCON 2021 talk - "Wil Git Be Around Forever? A List of Possible Successors"
JCON 2021 talk - "Wil Git Be Around Forever? A List of Possible Successors"JCON 2021 talk - "Wil Git Be Around Forever? A List of Possible Successors"
JCON 2021 talk - "Wil Git Be Around Forever? A List of Possible Successors"🎤 Hanno Embregts 🎸
 
Use Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile AppsUse Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile AppsNathan Smith
 
Gutmacher bookmarklets-sosu-europe-oct2018
Gutmacher bookmarklets-sosu-europe-oct2018Gutmacher bookmarklets-sosu-europe-oct2018
Gutmacher bookmarklets-sosu-europe-oct2018Glenn Gutmacher
 
Gutmacher javascript-bookmarklets-sosuv-july2020
Gutmacher javascript-bookmarklets-sosuv-july2020Gutmacher javascript-bookmarklets-sosuv-july2020
Gutmacher javascript-bookmarklets-sosuv-july2020Glenn Gutmacher
 
Joys Sorrows of Wysiwyg using Drupal
Joys Sorrows of Wysiwyg using DrupalJoys Sorrows of Wysiwyg using Drupal
Joys Sorrows of Wysiwyg using Drupalleoklein
 
Facebook Social Plugins
Facebook Social PluginsFacebook Social Plugins
Facebook Social PluginsAizat Faiz
 

Was ist angesagt? (19)

"Probably, Maybe, No: The State of HTML5 Audio" - Scott Schiller
"Probably, Maybe, No: The State of HTML5 Audio" - Scott Schiller"Probably, Maybe, No: The State of HTML5 Audio" - Scott Schiller
"Probably, Maybe, No: The State of HTML5 Audio" - Scott Schiller
 
Adobemax2009na
Adobemax2009naAdobemax2009na
Adobemax2009na
 
Api anti patterns
Api anti patternsApi anti patterns
Api anti patterns
 
Introducing YUI
Introducing YUIIntroducing YUI
Introducing YUI
 
Prebrowsing - Velocity NY 2013
Prebrowsing - Velocity NY 2013Prebrowsing - Velocity NY 2013
Prebrowsing - Velocity NY 2013
 
HTML5@电子商务.com
HTML5@电子商务.comHTML5@电子商务.com
HTML5@电子商务.com
 
Engineering culture
Engineering cultureEngineering culture
Engineering culture
 
Joomla 1, Joomla 2, Joomla 3 (Joomla Versions Explained)
Joomla 1, Joomla 2, Joomla 3 (Joomla Versions Explained)Joomla 1, Joomla 2, Joomla 3 (Joomla Versions Explained)
Joomla 1, Joomla 2, Joomla 3 (Joomla Versions Explained)
 
JCON 2021 talk - "Wil Git Be Around Forever? A List of Possible Successors"
JCON 2021 talk - "Wil Git Be Around Forever? A List of Possible Successors"JCON 2021 talk - "Wil Git Be Around Forever? A List of Possible Successors"
JCON 2021 talk - "Wil Git Be Around Forever? A List of Possible Successors"
 
Word press!you're doing it wrong
Word press!you're doing it wrongWord press!you're doing it wrong
Word press!you're doing it wrong
 
The Trouble With Type
The Trouble With TypeThe Trouble With Type
The Trouble With Type
 
Beyond Frameworks
Beyond FrameworksBeyond Frameworks
Beyond Frameworks
 
Jabber Bot
Jabber BotJabber Bot
Jabber Bot
 
Vodafone Widget Camp
Vodafone Widget CampVodafone Widget Camp
Vodafone Widget Camp
 
Use Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile AppsUse Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile Apps
 
Gutmacher bookmarklets-sosu-europe-oct2018
Gutmacher bookmarklets-sosu-europe-oct2018Gutmacher bookmarklets-sosu-europe-oct2018
Gutmacher bookmarklets-sosu-europe-oct2018
 
Gutmacher javascript-bookmarklets-sosuv-july2020
Gutmacher javascript-bookmarklets-sosuv-july2020Gutmacher javascript-bookmarklets-sosuv-july2020
Gutmacher javascript-bookmarklets-sosuv-july2020
 
Joys Sorrows of Wysiwyg using Drupal
Joys Sorrows of Wysiwyg using DrupalJoys Sorrows of Wysiwyg using Drupal
Joys Sorrows of Wysiwyg using Drupal
 
Facebook Social Plugins
Facebook Social PluginsFacebook Social Plugins
Facebook Social Plugins
 

Andere mochten auch

ACF CONSULTANTS - GLOBAL LEADERS IN FINANCIAL DEVELOPMENT
ACF CONSULTANTS - GLOBAL LEADERS IN FINANCIAL DEVELOPMENTACF CONSULTANTS - GLOBAL LEADERS IN FINANCIAL DEVELOPMENT
ACF CONSULTANTS - GLOBAL LEADERS IN FINANCIAL DEVELOPMENTNoshir Panthaky
 
The mobile browser world
The mobile browser worldThe mobile browser world
The mobile browser worldPeter-Paul Koch
 
The Mobile Web - Fronteers 2009
The Mobile Web - Fronteers 2009The Mobile Web - Fronteers 2009
The Mobile Web - Fronteers 2009Peter-Paul Koch
 
The mobile browser world
The mobile browser worldThe mobile browser world
The mobile browser worldPeter-Paul Koch
 

Andere mochten auch (7)

ACF CONSULTANTS - GLOBAL LEADERS IN FINANCIAL DEVELOPMENT
ACF CONSULTANTS - GLOBAL LEADERS IN FINANCIAL DEVELOPMENTACF CONSULTANTS - GLOBAL LEADERS IN FINANCIAL DEVELOPMENT
ACF CONSULTANTS - GLOBAL LEADERS IN FINANCIAL DEVELOPMENT
 
The touch events
The touch eventsThe touch events
The touch events
 
The mobile browser world
The mobile browser worldThe mobile browser world
The mobile browser world
 
Tesi
TesiTesi
Tesi
 
The Mobile Web - Fronteers 2009
The Mobile Web - Fronteers 2009The Mobile Web - Fronteers 2009
The Mobile Web - Fronteers 2009
 
The mobile browser world
The mobile browser worldThe mobile browser world
The mobile browser world
 
Proverbe
ProverbeProverbe
Proverbe
 

Ähnlich wie The Ajax Experience: State Of The Browsers

Resisting The Feature Creature
Resisting The Feature CreatureResisting The Feature Creature
Resisting The Feature CreatureChristian Heilmann
 
How to use a blog for publishing scientific research: A training guide part 2
How to use a blog for publishing scientific research: A training guide part 2How to use a blog for publishing scientific research: A training guide part 2
How to use a blog for publishing scientific research: A training guide part 2AfricanCommonsProject
 
Stefan Judis "Did we(b development) lose the right direction?"
Stefan Judis "Did we(b development) lose the right direction?"Stefan Judis "Did we(b development) lose the right direction?"
Stefan Judis "Did we(b development) lose the right direction?"Fwdays
 
DrupalCon Chicago - Best practices for cross-browser compatibility of Drupal ...
DrupalCon Chicago - Best practices for cross-browser compatibility of Drupal ...DrupalCon Chicago - Best practices for cross-browser compatibility of Drupal ...
DrupalCon Chicago - Best practices for cross-browser compatibility of Drupal ...Ovadiah Myrgorod
 
Is it time to start using HTML 5
Is it time to start using HTML 5Is it time to start using HTML 5
Is it time to start using HTML 5Ravi Raj
 
Teflon - Anti Stick for the browser attack surface
Teflon - Anti Stick for the browser attack surfaceTeflon - Anti Stick for the browser attack surface
Teflon - Anti Stick for the browser attack surfaceSaumil Shah
 
Troubleshooting: The Two Laws - IXIASOFT User Conference 2016
Troubleshooting: The Two Laws - IXIASOFT User Conference 2016Troubleshooting: The Two Laws - IXIASOFT User Conference 2016
Troubleshooting: The Two Laws - IXIASOFT User Conference 2016IXIASOFT
 
WordCamp UK - Accessibility and HTML 5
WordCamp UK - Accessibility and HTML 5WordCamp UK - Accessibility and HTML 5
WordCamp UK - Accessibility and HTML 5Benjamin Ellis
 
Successful Teams follow Standards
Successful Teams follow StandardsSuccessful Teams follow Standards
Successful Teams follow StandardsChristian Heilmann
 
Search Engine Spiders
Search Engine SpidersSearch Engine Spiders
Search Engine SpidersCJ Jenkins
 
Stapling and patching the web of now - ForwardJS3, San Francisco
Stapling and patching the web of now - ForwardJS3, San FranciscoStapling and patching the web of now - ForwardJS3, San Francisco
Stapling and patching the web of now - ForwardJS3, San FranciscoChristian Heilmann
 
Progressive Enhancement & Intentional Degradation 2
Progressive Enhancement & Intentional Degradation 2Progressive Enhancement & Intentional Degradation 2
Progressive Enhancement & Intentional Degradation 2elliotjaystocks
 

Ähnlich wie The Ajax Experience: State Of The Browsers (20)

Shifting Gears
Shifting GearsShifting Gears
Shifting Gears
 
Introduce Django
Introduce DjangoIntroduce Django
Introduce Django
 
Resisting The Feature Creature
Resisting The Feature CreatureResisting The Feature Creature
Resisting The Feature Creature
 
Linux Users are People, Too!
Linux Users are People, Too!Linux Users are People, Too!
Linux Users are People, Too!
 
How to use a blog for publishing scientific research: A training guide part 2
How to use a blog for publishing scientific research: A training guide part 2How to use a blog for publishing scientific research: A training guide part 2
How to use a blog for publishing scientific research: A training guide part 2
 
Lecture 9 Professional Practices
Lecture 9 Professional PracticesLecture 9 Professional Practices
Lecture 9 Professional Practices
 
Stefan Judis "Did we(b development) lose the right direction?"
Stefan Judis "Did we(b development) lose the right direction?"Stefan Judis "Did we(b development) lose the right direction?"
Stefan Judis "Did we(b development) lose the right direction?"
 
DrupalCon Chicago - Best practices for cross-browser compatibility of Drupal ...
DrupalCon Chicago - Best practices for cross-browser compatibility of Drupal ...DrupalCon Chicago - Best practices for cross-browser compatibility of Drupal ...
DrupalCon Chicago - Best practices for cross-browser compatibility of Drupal ...
 
Is it time to start using HTML 5
Is it time to start using HTML 5Is it time to start using HTML 5
Is it time to start using HTML 5
 
Teflon - Anti Stick for the browser attack surface
Teflon - Anti Stick for the browser attack surfaceTeflon - Anti Stick for the browser attack surface
Teflon - Anti Stick for the browser attack surface
 
SEO for Large Websites
SEO for Large WebsitesSEO for Large Websites
SEO for Large Websites
 
Flourish2011
Flourish2011Flourish2011
Flourish2011
 
Troubleshooting: The Two Laws - IXIASOFT User Conference 2016
Troubleshooting: The Two Laws - IXIASOFT User Conference 2016Troubleshooting: The Two Laws - IXIASOFT User Conference 2016
Troubleshooting: The Two Laws - IXIASOFT User Conference 2016
 
Yahoo for the Masses
Yahoo for the MassesYahoo for the Masses
Yahoo for the Masses
 
WordCamp UK - Accessibility and HTML 5
WordCamp UK - Accessibility and HTML 5WordCamp UK - Accessibility and HTML 5
WordCamp UK - Accessibility and HTML 5
 
Successful Teams follow Standards
Successful Teams follow StandardsSuccessful Teams follow Standards
Successful Teams follow Standards
 
Using HTML5 sensibly
Using HTML5 sensiblyUsing HTML5 sensibly
Using HTML5 sensibly
 
Search Engine Spiders
Search Engine SpidersSearch Engine Spiders
Search Engine Spiders
 
Stapling and patching the web of now - ForwardJS3, San Francisco
Stapling and patching the web of now - ForwardJS3, San FranciscoStapling and patching the web of now - ForwardJS3, San Francisco
Stapling and patching the web of now - ForwardJS3, San Francisco
 
Progressive Enhancement & Intentional Degradation 2
Progressive Enhancement & Intentional Degradation 2Progressive Enhancement & Intentional Degradation 2
Progressive Enhancement & Intentional Degradation 2
 

Mehr von Peter-Paul Koch

Rethinking the mobile web
Rethinking the mobile webRethinking the mobile web
Rethinking the mobile webPeter-Paul Koch
 
The future of the mobile web
The future of the mobile webThe future of the mobile web
The future of the mobile webPeter-Paul Koch
 
The touch events - WebExpo
The touch events - WebExpoThe touch events - WebExpo
The touch events - WebExpoPeter-Paul Koch
 
State of the Mobile Browsers
State of the Mobile BrowsersState of the Mobile Browsers
State of the Mobile BrowsersPeter-Paul Koch
 
Voices That Matter: JavaScript Events
Voices That Matter: JavaScript EventsVoices That Matter: JavaScript Events
Voices That Matter: JavaScript EventsPeter-Paul Koch
 
An Event Apart Boston: Principles of Unobtrusive JavaScript
An Event Apart Boston: Principles of Unobtrusive JavaScriptAn Event Apart Boston: Principles of Unobtrusive JavaScript
An Event Apart Boston: Principles of Unobtrusive JavaScriptPeter-Paul Koch
 
Google presentation: The Open Web goes mobile
Google presentation: The Open Web goes mobileGoogle presentation: The Open Web goes mobile
Google presentation: The Open Web goes mobilePeter-Paul Koch
 
Yahoo presentation: JavaScript Events
Yahoo presentation: JavaScript EventsYahoo presentation: JavaScript Events
Yahoo presentation: JavaScript EventsPeter-Paul Koch
 

Mehr von Peter-Paul Koch (11)

Rethinking the mobile web
Rethinking the mobile webRethinking the mobile web
Rethinking the mobile web
 
The future of the mobile web
The future of the mobile webThe future of the mobile web
The future of the mobile web
 
JSON over SMS
JSON over SMSJSON over SMS
JSON over SMS
 
The touch events - WebExpo
The touch events - WebExpoThe touch events - WebExpo
The touch events - WebExpo
 
Samsung
SamsungSamsung
Samsung
 
The touch events
The touch eventsThe touch events
The touch events
 
State of the Mobile Browsers
State of the Mobile BrowsersState of the Mobile Browsers
State of the Mobile Browsers
 
Voices That Matter: JavaScript Events
Voices That Matter: JavaScript EventsVoices That Matter: JavaScript Events
Voices That Matter: JavaScript Events
 
An Event Apart Boston: Principles of Unobtrusive JavaScript
An Event Apart Boston: Principles of Unobtrusive JavaScriptAn Event Apart Boston: Principles of Unobtrusive JavaScript
An Event Apart Boston: Principles of Unobtrusive JavaScript
 
Google presentation: The Open Web goes mobile
Google presentation: The Open Web goes mobileGoogle presentation: The Open Web goes mobile
Google presentation: The Open Web goes mobile
 
Yahoo presentation: JavaScript Events
Yahoo presentation: JavaScript EventsYahoo presentation: JavaScript Events
Yahoo presentation: JavaScript Events
 

Kürzlich hochgeladen

DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)Samir Dash
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAnitaRaj43
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Kürzlich hochgeladen (20)

DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

The Ajax Experience: State Of The Browsers