9. What’s important for us?
1. It has to be a window
2. Size has to match, what’s on the server
3. Should be able to resize to catch up with
the server
10. What can happen as a result of this call?
window.open(‘http://new.window.url’,
‘_blank’,
‘width=383, height=92’)
12. Nothing Happens
…unless you are in Chrome
kind of
New window is actually created, DOM is
loaded, but window remains hidden and
window.outerWidth == 0
15. Window Sized 383x92 Opens Correctly
…unless you are in Chrome
• Would open a window with all
dimensions not less than 100px
• Would let you resize to a smaller
size from within the window
At least there is a workaround…
16. Window Sized 383x92 Opens Correctly
…unless you are in fullscreen on Mac
• Safari would always open new
window in a tab when in fullscreen
• Chrome and Firefox would open
regular windows even in fullscreen
And there is no workaround for that…
19. 5.1.6 Browser Context Names
… a new browsing context is
being requested, and what
happens depends on the user
agent's configuration and/or
abilities.
More at http://www.w3.org/TR/html5/browsers.html
36. So What?
Sooner or later
• You’ll need to do something that your
framework does not support
• Something in the browser will change before
your framework supports it
• A bug in the framework will bite you
37. Each browser is incompatible with
any other browser.
W3C darmoyedy?
40. Easy and Consistent Checks for
Capabilities
function processMouseWheel(event) {
var delta = 0;
if (!event) { /* For IE */
event = window.event;
}
Unfortunately, this slide is not sponsored by caniuse.com
41. Meaningful Fallback and
Development Strategies
• Compatibility layers with standard interface
– WebSockets via Flash
– Canvas via Flash
• When browser catches up, throw
compatibility layer away
42. Our Jobs Aren't Getting Easier
Developers of Blink
say “Hi!” to you
Developers of Servo
say “Hi!” to you too
43.
44. Any questions?
Now:
and later:
@dmalenko
dmalenko@rollapp.com
www.dmalenko.org