https://bugzilla.wikimedia.org/show_bug.cgi?id=63303

--- Comment #8 from Krinkle <[email protected]> ---
If .super were the only issue, then that could work. However that isn't the
case.

For one, there are a few more properties that aren't allowed in old browsers.

And two, it isn't so much the property name but the functionality it provides
that is missing in those browsers. Just a few off the top of my head:

- Object.create
- Array.isArray
- JSON.stringify
- Reliable hasOwnProperty (as used by isPlainObject)
- Reliable typeof for native functions (as used by clone)

Fixing .super will make the parser die slightly later, that's all.

Fixing .super and the other properties will make the parser never die in IE8,
but it will fail upon execution. Though execution is fine as long as you have a
proper feature test (like VE has) before initialising too much.

The ES5 methods OOjs uses (Object.create, Array.isArray, etc.) are perfectly
polyfillable. I've always been very careful in OOjs to not adopt ES5 features
that are fundamentally new language constructs that are cannot polyfill.

However, just to explain that there is a little more to it. The exception you
saw is just the tip of a small floe of ice. A small floe, but it won't melt on
its own.

So here's what I'd propose (in no particular order) for the medium to long
term:

- Make OOjs parseable in ES3 engines.

- Document that OOjs is ES3 parser compatible, but does require ES5 features to
be present. Consumer is responsible for providing a polyfill of their choosing
if they need to support older browsers (write for the future, not the past).

- Ship an ES5 shim in MediaWiki core which can be used as a dependency of oojs.
And is conditionally loaded based on a quick feature test in a ResourceLoader
dependency function that adds the dependency conditionally (this conditional
dependency creation is a new feature in ResourceLoader's client js, however is
not yet exposed on the server-side).


This all of course is for OOjs core. OOjs UI makes much stronger use of browser
behaviour (because it renders visually, polyfilling is generally not an option,
it requires rigorous testing and adding of quirks and workaround for old
browsers).

For the short term:

- OOjs currently requires ES5. *Do not load* this module in older browsers. It
is the responsibility of the consuming code to feature test the environment
before loading everything. This is why VisualEditor doesn't throw up in IE8.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
Wikibugs-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikibugs-l

Reply via email to