Re: window.event and Event.srcElement

Le 25/03/2013 20:00, Boris Zbarsky a écrit :
> On 3/25/13 2:47 PM, David Bruant wrote:
>> For the latter case, a scoping trick might work. In essence, on* code
>> could run within a scope "located" between the code scope and the 
>> global scope.
>
> It already does: the scope is the element, with some more 
> complications as to what's on the scope chain above that.
I wasn't aware of that, but I see it now. Step 6 of:
http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#event-handler-content-attributes
(Lexical Environment Scope stuff)

> We could complicate the scoping setup for event handlers even more, of 
> course.  Would any UAs actually be willing to implement that (given 
> that e.g. Chrome doesn't even implement the current, simpler, scoping 
> setup sanely)? 
Any info on why they don't implement the spec scoping rules?
Is it going to be a case of de-facto standard too?

>> For the former case, things cannot be as easy as naively inserting an
>> intermediate scope, because the function definition is somewhere else,
>> but maybe we can get away with an equivalent trick. Thoughts?
>
> I can't see any equivalent tricks given the scoping rules in JavaScript.
>
> Basically, either UAs that currently implement window.event remove it 
> or it's clearly required for web compat and hence needs to be 
> specified so other UAs can implement it.  I don't see any other sane 
> options; do you?
Only an insane option. Sharing as food for thoughts:
when about to call a function from an eval'ed on* attribute string, 
change the function's [[Scope]] to contain an extra scope with an 
"event" variable. Restore the [[Scope]] to its original value when the 
frame is dropped.
But of course, as soon as I talked about changing [[Scope]], I 
definitely fell in the "insane" category as I warned :-/

Since that case apparently requires window.event, no need to add extra 
work on on* scoping, I guess.


>>> If you want specific site examples www.ocn.ne.jp (on "mobile" only,
>>> natch, thanks to only testing in WebKit) is the most recent one I came
>>> across.
>> Is it the on* case? (how do you test for "mobile only"?)
>
> It's using event handlers, yes.  You test for "mobile only" by loading 
> the site in Firefox on some desktop platform and Firefox on Android 
> and observing that the site is UA-sniffing and sending different 
> content, and that the site sent to desktop browsers works in Firefox 
> but the site sent to "mobile" browsers does not.
Now I realize my question was stupid...

David

Received on Monday, 25 March 2013 20:36:51 UTC