On Sun, 28 May 2006 17:05:45 +0700, Sjoerd Visscher <[EMAIL PROTECTED]> wrote:

When a script thread is in side effect free mode:
 1. It stays in this mode until the thread completes.
2. It can call any non-native function, but the same restrictions apply.
 3. It cannot assign any variables except locals.
4. It cannot call any native function except those specifically marked by the spec as side effects free. For example, sin() is side effects free, and window.open() is not.
 5. It can read any property that can be normally read.
6. It cannot assign any property for which a native setter function is used.

Ok, here you make it clear that with side effects you only mean visible side effects?

No, all side effects in the mathematical sense. The script is not allowed to alter the state of the world in any way.

It seems you are fine with setting properties of non-native javascript objects.

No, that's included in "It cannot assign any variables except locals". Maybe I should make it explicit that it also applies to properties of non-native objects.

7. It cannot create new object instances except those specifically marked by the spec as side effects free. For example, RegExp is side effects free, and Image is not.

Creating an Image should be allowed. It might be needed for measurements. Appending it to the document shouldn't.

Creating an Image may initiate a download. That's a side effect, and, in fact, creating Image objects is widely used to steal cookies.


--
Alexey Feldgendler <[EMAIL PROTECTED]>
[ICQ: 115226275] http://feldgendler.livejournal.com

Reply via email to