User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Build Identifier: Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
The attribute "top" from the window-object can be changed to anything i want.
The W3C states that this attribute has to be read-only:
tested locally and with own webserver ... but should be the same on other systems
Steps to Reproduce:
1. make a page that opens another page via window.open
2. try to change window.open to "hello world" or anything else
window.top can be changed to anything i want to (strings, objects, null,...)
Tested locally (file:///....) and via own webserver (to wipe out other restrictions)
Tested with current Firefox 4 (4.0.1) in german localization
Created attachment 529513 [details]
If my server is not up, here my testfiles
It's readonly, but replaceable in Gecko (see section B of the link you cite).
What do other browsers do here?
Looks like it's not replaceable in Safari, Chrome, Opera.
jst, how do you feel about changing that in Gecko?
(In reply to comment #3)
> Looks like it's not replaceable in Safari, Chrome, Opera.
I think this is a small flaw of implementation of that spec in gecko. It has its reason why it should not be replaceable ... could be misused in some ways i guess (opening pages in hidden iframes without having affected to be replaced from that iframes by setting the top-attribute to null or anything else than the real top).
i dont have made up a lot of thoughts, just hat do give it a try when it came into my mind ;)
Well, the reason to have properties replaceable is so that this sort of script could work:
top = document.body.offsetTop;
top += 5;
myDiv.style.top = top + "px";
Note that this script will fail in non-Gecko browsers right now, whereas if the first line started with |var| then it will work in all browsers.
(In reply to comment #5)
> Well, the reason to have properties replaceable is so that this sort of script
> could work:
> top = document.body.offsetTop;
> top += 5;
> myDiv.style.top = top + "px";
> Note that this script will fail in non-Gecko browsers right now, whereas if the
> first line started with |var| then it will work in all browsers.
good example, but due to "all" other browsers are handling "top" as non-replaceable i think gecko is just handling it wrong in replacing special properties. i personally think its bad-practice to use keywords as variable-names, especially without explicit using "var" (got in a lot of trouble already by using other persons code). currently im starting to think if it is possible to change other properties like document or something like that ...
Created attachment 530938 [details] [diff] [review]
Expectedly, this caused a test failure. Unexpectedly, it caused only one.
Comment on attachment 530938 [details] [diff] [review]
Should be probably mentioned on https://developer.mozilla.org/en/window.top
Mentioned on Firefox 6 for developers.