On 11/12/2012 11:55 AM, Boris Zbarsky wrote:
Consider the attached testcase, which calls setTimeout on a window and passes 
in a function from a different window.

When this function is then called, it throws.

Gecko, WebKit, and Presto all seem to trigger the onerror handler of the window 
setTimeout was called on in this case.

Per spec, section 7.1.3.5.1, we have:

   Whenever an uncaught runtime script error occurs in one of the
   scripts associated with a Document, the user agent must report
   the error at the URL of the resource containing the script (as
   established when the script was created), with the problematic
   position (line number and column number) in that resource, in
   the script's origin, using the onerror event handler of the
   script's global object.

But the global object is the window the function came from.  So the spec 
doesn't seem to match any of the above three rendering engines.  Does it
match Trident?

I ask because I'm worried about web compat here.  While I agree that what the 
spec says to do is the sensible thing (and in fact, I had accidentally
switched Gecko to doing what the spec says here as part of working on something 
else entirely), if none of the UAs do it then there may be web content
that relies on it not happening.  There are certainly tests in Mozilla's 
regression test suite that inadvertently rely on Gecko's current behavior...


First I thought the spec behavior would make more sense, but if the error is 
about executing something bound to
window A it would be quite surprising to get error event on window B.
But I don't feel strongly about this.


-Olli


-Boris

Reply via email to