Links

Lists

Latest Updates

Ruby On Rails List
Python list
Advanced Java
The JavaScript List
Apache Users
Full Disclosure
Linux Security

Search the archives!


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Javascript] Questions about document.readyState


  • From: nick at nickfitz.co.uk (Nick Fitzsimons)
  • Subject: [Javascript] Questions about document.readyState
  • Date: Sun Jun 25 09:43:53 2006

tedd wrote:
> Oh javascript masters:
> 
> I'm trying to figure out "document.readyState" and how it works.
> 
> In my quest, I came across a couple of things that don't seem logical to me. Maybe someone here would be knowledge and kind enough to explain it to me.
> 
> My questions and example are shown here:
> 
> http://xn--ovg.com/a7.php
> 
> Why?
> 
> tedd
> 
> PS: If you browser complains about the url, please let me now -- thanks.
> 

Your code is writing to the document (using document.write()) and then 
recursively calling itself. The document can never be complete until you 
stop writing to it. Also the JavaScript interpreter has a sanity check 
which, finding that the function has called itself 1000 times, assumes 
that a bug is causing an infinite recursive descent and stops it to 
prevent your browser from crashing.

Try something like the following:

var states = [];

function checkReadyState() {
    var state = document.readyState;
    states.push(state);
    if (state == "complete") {
       clearInterval(timer);
       alert(states.join("\n"));
    }
}

var timer = setInterval(checkReadyState, 10);

The Microsoft documentation for readyState is at:
http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/readystate_1.asp?frame=true

Note that it's a non-standard property, so non-Microsoft browsers are 
under no obligation to support it, or to have it work the same way. The 
above code shows different results in Internet Explorer for Windows (v. 
6) and Opera (v. 8.5), but shows no result at all in Firefox 1.5.

HTH,

Nick.
-- 
Nick Fitzsimons
http://www.nickfitz.co.uk/