【问题标题】:QPython3 problems with Javascript in HTML GUIHTML GUI 中 Javascript 的 QPython3 问题
【发布时间】:2018-04-27 11:34:11
【问题描述】:

QPython3,Android 6.0;我猜JS不能实例化 var droid = new Android(); 有解决问题的提示吗?

Python 代码(两种情况都一样!):

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):

<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):

<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>

虽然在案例 1 中提示 ("Hello JavaScript","");执行它不是情况2!

QPython3 (Android 6) SL4A eventPost() 和 eventWaitFor() 在以下示例中运行良好(添加信息请参阅http://www.mithril.com.au/android/doc/):

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 data 有类似的问题 在https://stackoverflow.com/questions/36478310/qpython-webview-javascript-android-object

问候 古斯塔夫 (2017-03-21)

【问题讨论】:

    标签: javascript android qpython3


    【解决方案1】:

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

    问候 古斯塔夫

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。据我发现,至少在最近的版本中,您需要通过调用 JavascriptAddInterface 使用 webview 时添加一个 Android 界面,而从 SL4A 来源看来,它似乎没有。 太糟糕了...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-04
        • 2018-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多