Android webview " Uncaught SyntaxError: jeton inattendu illégal"

dans mon programme android j'ai obtenu un webview et j'ai besoin de définir des valeurs aux éléments de webview (textareas, cases à cocher etc) dynamiquement. j'ai une méthode javascript qui reçoit les valeurs du programme et effectuer des opérations de chaîne et stocke les valeurs de l'élément correct. Mais j'obtiens toujours cette erreur... un peu coincé ici. Toute aide sera appréciée.

j'ai exécuté avec succès le script dans L'éditeur W3Schools TryIt, mais pas dans le programme!

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

et ma méthode Javascript pour définir les valeurs des textareas dans le 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("-!@!-") == -1) {

            var queArray = new Array();
            queArray =pipeSplitedArray[i].split("-@!@-");

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

les valeurs sont transmises sur un chargement défini par un paquet..

    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("-!@!-") == -1) { var queArray = new Array(); queArray =pipeSplitedArray[i].split("-@!@-"); 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+"));");
                }
            }

le contenu HTML chargé dans le webView, questionsArray[questionIndex] est

<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 passed onpagefinished:

69_206-@!@-MyName||

L'erreur que je reçois tout le temps pendant l'exécution de mon application est

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

j'ai essayé d'exécuter le script dans les écoles W3 Tryit Editor et le script est exécuté avec succès, mais jamais dans l'application android.. quel est mon erreur? Ce serait génial si vous pouvez les aider!!

Merci d'avance..

8
demandé sur Arun Jose 2013-11-23 11:36:22

2 réponses

Trouvé l'Erreur. Vous devez mettre la valeur de chaîne de caractères entre guillemets en passant comme paramètre.

Mauvais

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

Correct

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

La valeur doit être entre guillemets, vérifier myFunction('69_206-@!@-MyName||')

12
répondu Arun Jose 2013-12-05 10:20:34

Vérifiez votre fichier JavaScript

si vous avez la mauvaise syntaxe de l'opérateur relationnel dans la déclaration if.

modifier => 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();
    }
});​

Autres de vérifier ce code:

Si vous avez besoin pour vous assurer que la chaîne n'est pas juste un tas d'espaces vides (je suppose que c'est pour la validation de formulaire), vous devez faire un remplacement sur les espaces.

str.replace(/-!!!-/g,"")
1
répondu codercat 2013-11-23 08:45:43