[Twisted-web] LivePage client.set()
Donovan Preston
dp at ulaluma.com
Tue Mar 22 09:55:27 MST 2005
On Mar 20, 2005, at 8:24 PM, Dave Cook wrote:
> I'd like to set the <option>s in on <select> based on user input from
> another (using Nevow 0.3). I tried something like
>
> client.set("mySelect", [tags.option[optionText] for optionText in
> myListOfStrings])
>
> in my handler. This works great for Safari, but Firefox seems to
> ignore the <option> tags and just inserts text into the DOM at that
> point. *Should* the above work generally, or was I just lucky with
> Safari?
Doing things like this is highly dependent on how well a browser lets
you arbitrarily swap out dom elements after the page is already
rendered. As you observed, this works on Safari but not IE or Firefox.
I don't think there is really any technique besides experimentation to
determine what does and does not work.
.innerHTML is not standard, but it was invented by IE and is very
widely supported by all other major browsers now. It works the most
reliably of any techniques I have found short of using the actual w3c
DOM createElement/appendChild APIs to programatically construct nodes
in the client, which would be a real pain in the ass to render.
I suggest trying something like this instead to see if browsers can
cope with it a little better:
tags.span(id="mySelect")[...]
client.set("mySelect", tags.select[[tags.option[optionText] for
optionText in myListOfStrings]])
dp
More information about the Twisted-web
mailing list