2013-11-23 22 views
8

In meinem Android-Programm habe ich eine Webansicht und brauchen Werte auf die Webansicht Elemente (Textfelder, Kontrollkästchen usw.) dynamisch einzustellen. Ich habe eine JavaScript-Methode, die Werte aus dem Programm empfängt und Zeichenfolgenoperationen ausführt und die Werte im richtigen Element speichert. Aber ich bekomme diese Fehlermeldung immer ... irgendwie hier fest. Jede Hilfe wird geschätzt.Android webview „Uncaught Syntaxerror: unerwartetes Token ILLEGAL“

ich erfolgreich ausgeführt das Skript in den w3schools Tryit Editor, aber im Programm nicht funktioniert!

final WebView webView = new WebView(getApplicationContext()); 
LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, 1); 
webView.setLayoutParams(params); 
webView.setBackgroundColor(Color.LTGRAY); 
webView.getSettings().setJavaScriptEnabled(true); 
webView.getSettings().setDomStorageEnabled(true); 
webView.setWebChromeClient(new android.webkit.WebChromeClient()); 
webView.setWebViewClient(new WebChromeClient()); 
webView.loadData("<!DOCTYPE html><html><body>"+ questionsArray[questionIndex] +"</body></html>", "text/html", "UTF-8"); 
webView.addJavascriptInterface(javaScriptInterface, "HtmlViewer"); 
scrolRootLayout.addView(surveyWebView); 

Und meine Javascript-Methode Werte für die Textfelder in den webView

function myFunction(var_) 
{ 
    var str = var_.replace("-!!!-",""); 
    var pipeSplitedArray = str.split("||"); 

    for(var i=0; i<pipeSplitedArray.length-1; i++) { 

     if(pipeSplitedArray[i].indexOf("[email protected]!-") == -1) { 

      var queArray = new Array(); 
      queArray =pipeSplitedArray[i].split("[email protected][email protected]"); 

      if(document.getElementsByName(queArray[0])) 
       document.getElementsByName(queArray[0]).item(0).innerHTML=queArray[1]; 
     } 
    } 
} 

Werte auf onPageFinished Läden übergeben werden, setzen ..

private class WebChromeClient extends WebViewClient { 

       @Override 
       public boolean shouldOverrideUrlLoading(WebView view, String url) { 

        view.loadUrl(url); 
        return true; 
       } 

       public void onPageFinished(WebView view, String url) { 

        String script = "javascript:function myFunction(var_) { var pipeSplitedArray = var_.split(\"\\|\\|\"); for(var i=0; i<pipeSplitedArray.length-1; i++) { if(pipeSplitedArray[i].indexOf(\"[email protected]!-\") == -1) { var queArray = new Array(); queArray =pipeSplitedArray[i].split(\"[email protected][email protected]\"); if(document.getElementsByName(queArray[0])) document.getElementsByName(queArray[0]).item(0).innerHTML=queArray[1]; } } }"; 
        view.loadUrl(script); 
        view.loadUrl("javascript:window.HtmlViewer.injectIntoWebView(myFunction("+answerString+"));"); 
       } 
      } 

den HTML-Inhalt in der webView geladen, questionsArray [questionIndex] ist

<div class="newmain5 norma12" style="position:relative;width:320px;"> Enter your name :</div> 
<div class="newmain6" style="position:relative;width:275px;left:10px;"> 
<textarea name="69_206" id="1" rows="5" cols="30" style="font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#666666; width:260px; border:1px solid #CCCCCC; background-color:#EBEBEB;" /> 
</textarea> 
</div> 

String auf onPageFinished geben:

[email protected][email protected]|| 

Die Fehler, die ich alle Zeit erhalten, während meine Anwendung läuft

ist
11-23 14:46:59.786: I/chromium(2763): [INFO:CONSOLE(1)] "Uncaught SyntaxError: Unexpected token ILLEGAL", source: (1) 

ich das Skript in den w3schools Tryit Editor ausgeführt wird versucht, und das Skript erfolgreich ausgeführt, aber nie in der android-Anwendung .. was ist mein Fehler? Wäre toll wenn du helfen kannst !!

Vielen Dank im Voraus ..

+0

was brauchen sollten Zeichenfolge von Javascript zu ersetzen. – codercat

+0

str.replace ("/ - !!!-/"," ") check this – codercat

+0

was du ersetzen willst leer entweder null – codercat

Antwort

12

Fehler gefunden. Sie müssen den String-Wert in Anführungszeichen setzen, während Sie als Parameter übergeben werden.

Wrong

view.loadUrl("javascript:window.HtmlViewer.injectIntoWebView(myFunction("+answerString+"));"); 

Correct

view.loadUrl("javascript:window.HtmlViewer.injectIntoWebView(myFunction('"+answerString+"'));"); 

Der Wert sollte in Anführungszeichen gesetzt werden, überprüfen myFunction('[email protected][email protected]||')

1

Prüfen Sie JavaScript

Datei, wenn Sie falsche Syntax von relationalen Operator in if-Anweisung haben.

Änderung => to >= and =< to <=

$('#search').bind('keydown', function() { 
    tmp = Number(event.keyCode); 
    if ((tmp <= "48" && tmp >= "90") || (tmp <= "96" && tmp >= "111") || (tmp <= "186" && tmp >= "222")) { 
     showSearching(); 
    } 
});​ 

Andere diesen Code überprüfen:

Wenn Sie sicherstellen müssen, dass die Zeichenfolge nicht nur ein Haufen von leeren Räumen ist (ich davon aus, das für die Formularvalidierung ist) Sie müssen einen Ersatz auf den Räumen vornehmen.

str.replace(/-!!!-/g,"") 
+1

Nein, meine Javascript-Methode hat nicht die angegebenen Operatoren !! Der Javascript-Code ist oben angegeben! : | –

+0

Ersetzen der Zeichenfolge str.replace ("/ - !!! - /", "") auch nicht geholfen !!! –

+0

@ArunJose versuche so var_.replace (("/ - !!! - /", "") – codercat

Verwandte Themen