2013-03-11 2 views
5

Ich versuche, eine JavaScript-Funktion SetGameName() durch Android-Webview-Aktivität aufrufen, aber es wirft uncaught ReferenceError:setGameName not defined at :1.uncaught ReferenceError, Aufruf von JavaScript-Funktion durch Android-Anwendung ..?

Mein Quellcode ist wie folgt:

webView2.setWebChromeClient(new WebChromeClient()); 
webView2.getSettings().setLightTouchEnabled(true); 
webView2.getSettings().setJavaScriptEnabled(true); 
webView2.addJavascriptInterface(jsInterface, "AndroidFunction"); 
webView2.loadUrl("file:///android_asset/www/index.html"); 
webView2.loadUrl("javascript:setGameName()"); 

Html-Code:

<body> 

     <script type="text/javascript"> 
      function init() { 
       console.log("====== I am getting called::==="); 
       var testVal = document.getElementById('playertextId').value; 
       AndroidFunction.proceedFurther(testVal); 
      }; 

      function setGameName() { 
       console.log("====== Got the value==="); 
       document.getElementById('gametextId').value; 
      }; 
     </script> 
</body> 

Es ist index.html feine Laden aber bei Funktionsaufruf werfen Ausnahme, Bitte geben Sie eine passende Lösung ..

Update:

i have found the problem the page is not getting loaded at the time of function call..(Since on giving a time delay of 5000ms it is getting called..)!! 

Aber wie implementiere ich es dann ..?

Antwort

4

loadUrl ist asynchron. Das bedeutet, dass es unmittelbar vor dem Laden der Seite zurückgegeben wird. SetGameName existiert also noch nicht, wenn Sie versuchen, es aufzurufen.

Sie können einen WebClient mit einer onPageFinished-Methode implementieren und Ihren JavaScript-Code dort aufrufen.

+1

@ ZeroflagL..Could Sie bitte elborate wie soll ich es implementieren ..? –

+2

[hier] (http://lexandera.com/2009/01/injecting-javascript-into-a-webview/) ist ein gutes Beispiel. – zeroflagL

+1

Danke, es hat für mich funktioniert :) –

0

Ich bin nicht sehr sicher, aber wahrscheinlich müssen Sie file: ///android_asset/www/index.html auf einen Webserver stellen und dann abrufen. Standardmäßig lassen Browser JS nicht von JS aus Dateisystemen laden.

+2

@gashu ... Es ist nicht so .. Datei wird geladen und interne JavaScript-Funktionen funktionieren gut. nur ein Anruf von Aktivität zu js wirft eine Ausnahme .. –

Verwandte Themen