【发布时间】:2011-11-01 13:13:40
【问题描述】:
我想知道一个简单问题的答案,但我没有找到一个好的答案 (我已经用谷歌搜索了几个小时:))
我正在用 python 玩 sl4a,我可以将事件从 js 发送到 python 脚本,但是 js 没有捕捉到 eventPost 我在下面的代码中从 python 到 js。
任何人都知道这是如何完成的,或者是否有其他方法没有 registerCallback?
HTML 代码:
<html>
<head>
<script>
var droid = new Android();
function doit(){
droid.makeToast("Text send :=>"+document.getElementById("msg").value);
droid.eventPost("doit",document.getElementById("msg").value);
}
function alert_me(data){
droid.makeToast("All done!");
document.getElementById("msg").value = '';
}
droid.registerCallback("done",alert_me);
</script>
</head>
<body>
<input type="text" name="boton" id="msg" value="" />
<input type="button" name="boton" value="Go!" onclick="javascript:doit()" />
</body>
</html>
Python 代码:
import android,time
if __name__ == '__main__' :
droid = android.Android()
droid.webViewShow("file:///sdcard/sl4a/scripts/sample.html")
while True:
event = droid.eventWait().result
if event["name"] == 'doit':
droid.makeToast("Event catched! %s" % event['data'])
droid.eventPost("done","Done message")
time.sleep(2)
droid.exit()
【问题讨论】:
-
你的 JS
alert_me函数没有使用它收到的参数。如果是这样,则 arg 将有一个名为data的成员,因此在您的函数中data.data将评估为"Done Message"。