2017-03-21 5 views
0

QPython3, Android 6.0; Ich denke, JS kann nicht instance var droid = new Android(); Hinweise zur Lösung des Problems?QPython3 Probleme mit Javascript in HTML GUI

Python-Code (die in beiden Fällen gleich!):

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-Code: test10_le_HTMLGUI_01.html (Fall 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> 

die HTML-Code (Fall 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> 

Während im Fall 1 die Aufforderung ("Hallo JavaScript", ""); ausgeführt wird, ist es nicht im Fall 2!

QPython3 (Android 6) SL4A eventPost() und eventWaitFor() funktioniert auf das folgende Beispiel (für Info in http://www.mithril.com.au/android/doc/ beziehen.):

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']) 

Beweis: Wenn Sie die Zeile droid Kommentar aus. eventPost ('Event1', t, 1) dann wird eventWaitFor() für immer blockieren!

Vielleicht sind wir ve ein ähnliches Problem in QPython3 webViewShow - Script doesn't receiving data und in https://stackoverflow.com/questions/36478310/qpython-webview-javascript-android-object

Grüße Gustav (2017-03-21)

Antwort