SlideShare a Scribd company logo
1 of 129
Download to read offline
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

More Related Content

What's hot

"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
 

What's hot (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
 

Viewers also liked

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
 

Viewers also liked (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
 

Similar to 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
 

Similar to 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
 

More from 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
 

More from 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
 

Recently uploaded

The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 

Recently uploaded (20)

The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 

The Ajax Experience: State Of The Browsers