W3C home > Mailing lists > Public > whatwg@whatwg.org > April 2005

[whatwg] Scripting Tweaks

From: Dean Edwards <dean@edwards.name>
Date: Wed, 20 Apr 2005 16:18:09 +0100
Message-ID: <426672B1.8020304@edwards.name>
Ian Hickson wrote:
> On Wed, 20 Apr 2005, Dean Edwards wrote:
> 
>>>So you'd submit to a hidden <iframe> and then disable the main page?
>>
>>Yep. The iframe then unlocks the page when submission is complete. 
>>Forgetting about iframes for a minute. This is analogous to disabling 
>>the entire application (not the chrome). Most GUI apps have this 
>>behavior to some degree.
> 
> 
> Most GUI applications don't have the possibility of the network dying and 
> never re-enabling the page. :-)
> 
> 

True. However, if the network dies the page is not going to reflect that 
anyway. I've seen many users continuing to click submit because they 
don't get immediate feedback. A good server application will handle this 
of course. But this would not be an issue in a GUI which would usually 
disable its interface when processing. Remember, I'm talking about 
disabling the page /not/ the browser.

> 
>>>>I can't think of one off the top of my head but I do find myself 
>>>>using it. It's certainly handy for passing string references around 
>>>>rather than object references.
>>>
>>>Wouldn't object references by lighter weight?
> 
> I beg to differ:
> 
>    elem[i].disabled = true;
>    setTimeout(function () { elem[i].disabled = false }, 1);
> 
> That looks a lot easier than the eval() to me. And shorter. And it will 
> have syntax errors caught at compile time.
> 

Yes, but as I said initially, that creates a closure. This is not always 
the most efficient solution. Your code won't work anyway because "i" is 
variable. The closure would need to be more complicated to work properly.

> Is there another use case? :-)
> 

OK. You're making me work hard here.  :-)

If I want to build a list of elements that I've already processed:

var processed = {};
for (var i in elements) {
   if (!processed[elements[i].uniqueID]) {
     process(elements[i]);
     processed[elements[i].uniqueID] = true;
   }
}

I can't think of another way of doing that.

-dean
Received on Wednesday, 20 April 2005 08:18:09 UTC

This archive was generated by hypermail 2.3.1 : Monday, 13 April 2015 23:08:22 UTC