[Twisted-Python] Woven LivePage sendScript works with some scripts but not others
Tim Andrews
tim.andrews at adpro.com.au
Thu Jul 17 18:37:23 MDT 2003
Hi twisted,
I'm trying to use LivePage to send some script to a web page.
All works well if the script is as per the manual example, ie
sendScript("alert('Hello world!')")
will pop up a window as expected.
However, if i try a script like "document.all.fred.innerHTML='FRED'" I get
an error on the page "Error: document.all.fred is null or not an object". I
know the script is okay because if it is on the on the page it will work.
Any clues?
Thanks,
Tim
Some example code for your perusal ...
from twisted.web.woven import page, controller, interfaces
model = {
'name': 'LivePage Handled Events',
'link': 'http://link',
}
template = """
<html>
<body>
<h3> Watch me change! </h3>
<div id = "fred"> blah </div>
<h3 model="name" view="Text"/>
<div model="link" view="Link" controller="foo">mouse here won't work
:(</div>
<span view="webConduitGlue" />
<h3>Locally Handled Events</h3>
<a href="http://link"
onmouseover="document.all.fred.innerHTML='FRED'"
onmouseout="document.all.fred.innerHTML='fred'">mouse here will work
:)
</a>
</body>
</html>
"""
class fooController(controller.Controller):
def handle(self, request):
global currentPage
currentPage = request.getSession(interfaces.IWovenLivePage)
self.view.addEventHandler("onmouseover", self.foo_onMouseOver)
self.view.addEventHandler("onmouseout", self.foo_onMouseOut)
def foo_onMouseOver(self, request, widget):
global currentPage
print 'foo over'
currentPage.sendScript("document.all.fred.innerHTML='FRED'") # :( this
doesn't work
# currentPage.sendScript("alert('Hello world!')") # :) this works
def foo_onMouseOut(self, request, widget):
global currentPage
print 'foo out'
currentPage.sendScript("document.all.fred.innerHTML='fred'") # :( this
doesn't work
class fooPage(page.LivePage):
def wcfactory_foo(self, request, node, model):
return fooController(model)
resource = fooPage(model, template=template)
More information about the Twisted-Python
mailing list