Lokalt skript
I dette eksempelet legger vi javascriptet som en text, og evaluerer etter behov. Javascriptet som styrer det hele ser slik ut
function doScript()
{
var T=['<script>document.getElementById("mark").src="bs2.png";<\/script>',
'<script>alert("hallo");<\/script>',
'<script>document.getElementById("dump").innerHTML=\
"Job done, script removed";<\/script>'].join();
elt=document.getElementById("dump");
elt.innerHTML=T;
scripts=elt.getElementsByTagName("script");
for(ix=0;ix<scripts.length;ix++)
eval(scripts[ix].text);
}
?
Skript fra tjener
Her laster vi script fra tjeneren med et Ajax-kall. Pythonscriptet som leverer er slik:
#! /usr/bin/python
import cgi
"""
Return javascript
"""
scripts=[
"""
<p>hallo</p>
<script>alert('hallo fra scriptet');</script>
""",
"""
<div id="image">
<script>document.getElementById("image").innerHTML='<img src="bs2.png" alt="bs"/>'</script>
</div>
""",
"""
<p>doing 0 and 1</p>
<script>loadScript(0,'dump0')</script>
<script>loadScript(1,'dump1')</script>
<script>document.getElementById("dump2").innerHTML="done all"</script>
"""]
form=cgi.FieldStorage()
print 'Content-type: text/html; charset=utf-8\n'
scriptnum=0;
try:
scriptnum=int(form['scriptnum'].value)
if scriptnum > 2 or scriptnum <0:
scriptnume=0
print scripts[scriptnum]
except:
print scripts[0]
Javascriptet som laster inn og evaluerer script er slik:
function loadScript(scriptnum,targetNodeId){
$.ajax({
url:"getScript.py",
data:"scriptnum="+scriptnum,
success:function(data)
{
var elt=document.getElementById(targetNodeId);
elt.innerHTML=data;
scripts=elt.getElementsByTagName("script");
for(var ix=0;ix< scripts.length;ix++)
eval(scripts[ix].text);
},
error:function(data)
{
document.getElementById(targetNodeId).innerHTML='error';
}
});
}
-------
-----
(reload siden først)