首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTML中Javascript的QPython3问题

HTML中Javascript的QPython3问题
EN

Stack Overflow用户
提问于 2017-03-21 21:16:20
回答 2查看 361关注 0票数 0

QPython3,Android6.0;我猜JS不能实例化var droid = new Android();有什么提示可以解决这个问题吗?

Python代码(两种情况下都相同!):

代码语言:javascript
复制
import android

droid=android.Android()

droid.webViewShow('file:///storage/emulated/0/qpython/scripts3/test10_le_HTMLGUI_01.html')

while True:
    result=droid.eventWaitFor('sag').result
    droid.ttsSpeak(result['data'])

HTML-代码: test10_le_HTMLGUI_01.html (案例1):

代码语言:javascript
复制
<html>
  <head>
    <title>Text To Speech</title>
    <script>
      var n = prompt("Hello JavaScript","");
      var droid = new Android();
      var speak = function() { 
        var n = prompt("Hello JavaScript","");
        droid.eventPost("sag", document.getElementById("sag").value, 1);
      }
    </script>
  </head>
  <body>
    <form onsubmit="speak(); return false;">
      <label for="sag">What is your message?</label>
      <input type="text" id="sag" />
      <input type="submit" value="Speak" />
    </form>
  </body>
</html>

HTML-代码(案例2):

代码语言:javascript
复制
<html>
  <head>
    <title>Text To Speech</title>
    <script>
      var droid = new Android();
      var n = prompt("Hello JavaScript","");
      var speak = function() { 
        var n = prompt("Hello JavaScript","");
        droid.eventPost("sag", document.getElementById("sag").value, 1);
      }
    </script>
  </head>
  <body>
    <form onsubmit="speak(); return false;">
      <label for="sag">What is your message?</label>
      <input type="text" id="sag" />
      <input type="submit" value="Speak" />
    </form>
  </body>
</html>

而在第一种情况下,提示符(“Hello JavaScript","");会被执行,而在第二种情况下则不会!

QPython3 (Android6)、SL4A、eventPost()和eventWaitFor()在下面的例子中工作得很好。详情请参阅http://www.mithril.com.au/android/doc/):

代码语言:javascript
复制
import android, time
droid=android.Android()
t = 'Geschafft!'
print('debug 1')
droid.eventPost('Event1', t, 1)
print('debug 2')
print('debug 3')
result=droid.eventWaitFor('Event1').result
droid.ttsSpeak(result['data'])
print('debug 4')
print(result['data'])

证明:如果您注释掉行droid.eventPost('Event1',t,1),那么eventWaitFor()将永远阻塞!

也许我们在QPython3 webViewShow - Script doesn't receiving datahttps://stackoverflow.com/questions/36478310/qpython-webview-javascript-android-object中也有类似的问题。

关于Gustav (2017-03-21)

EN

回答 2

Stack Overflow用户

发布于 2017-03-23 04:07:15

使用bottle()代替JavaScript。它已经集成到了QPython3中,并为几乎相同的任务提供了解决方案。在https://bottlepy.org/docs/dev/bottle-docs.pdf上找到bottle()的教程

古斯塔夫

票数 1
EN

Stack Overflow用户

发布于 2018-04-27 11:34:11

我遇到了同样的问题。据我所知,至少在最近的版本中,当使用webview时,你需要通过调用JavascriptAddInterface来添加一个安卓界面,而从SL4A源码来看似乎没有。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42928283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档