WebView: Uncaught ReferenceError: Android n'est pas défini
Je suis entrain de créer un WebView avec le code plutôt que de charger via un XML de mise en page. La webview semble être créés correctement, mais je vois les erreurs:
W/AwContents( 4564): nativeOnDraw failed; clearing to background color.
I/chromium( 4564): [INFO:CONSOLE(1)] "Uncaught ReferenceError: Android is not defined",
...
Si je mets de la WebView dans mon XML de mise en page, je n'ai pas ces erreurs. Notez que, si le script est exécuté, il va changer la onLoadEvent valeur de champ de "non" à "oui. Ce qui se passe, donc, à l'évidence, le script est en cours d'exécution. Il n'est pas aller chercher le nom d'utilisateur et le mot de passe, même si, en indiquant que "Android" n'est pas défini.
J'ai aussi essayé de l'exécution de addView() avant de webView.loadData(); mêmes erreurs.
Voici le code qui crée la WebView:
@SuppressLint("SetJavaScriptEnabled")
private void onOk ()
{
Log.d ("RegTest", "onOk");
webView = new WebView (this);
webView.setLayoutParams (new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled (true);
CharSequence cs = readAsset ("input_form");
webView.loadData (cs.toString(), "text/html", "UTF-8");
contentView.addView (webView);
}
Et voici les cisailles de "input_form", qui est la source de la WebView contenu:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
...
<script type="text/javascript">
function onLoadValues ()
{
document.getElementById ("onLoadEvent").value = "yes";
document.getElementById ("FullName").value = Android.getFullName();
document.getElementById ("EmailAddress").value = Android.getEmailAddr();
}
</script>
</head>
<body onload="onLoadValues()">
<form name="catwebformform52174" method="post" ...>
<fieldset>
<div class="pure-control-group">
<label for="onLoadValues">onLoadEvent</label>
<input id="onLoadEvent" name="onLoadEvent" type="text" placeholder="no">
</div>
<div class="pure-control-group">
<label for="FullName">Name</label>
<input id="FullName" name="FullName" type="text" placeholder="Name">
</div>
<div class="pure-control-group">
<label for="EmailAddress">Email Address</label>
<input id="EmailAddress" name="EmailAddress" type="email" placeholder="Email Address">
</div>
</fieldset>
</form>
</body>
</html>
OriginalL'auteur Peri Hartman | 2015-03-14
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas défini Android comme un
javascripinterface
vous devez écrire ci-dessous les lignes deSyntaxe de addJavascriptInterface() la méthode
Dans quelle classe vous avez la méthode getFullName et getEmailAddr? Aussi Java Script de l'Interface et l'Interface Java sont différents.
Ok, basé sur l'original de votre réponse, j'ai pensé à elle. Vous n'avez pas de définir un nouveau JavascriptInterface. Au lieu de cela, j'avais besoin de ce code: webView.addJavascriptInterface (this, "Android"); Si vous voulez corriger votre réponse - pour l'amour des autres lecteurs, je vais le marquer comme étant correcte. Merci.
Si vous créez vos méthodes de rappel dans la même classe alors vous avez juste besoin de passer de " il " mais si vous avez d'autres classe, alors vous devez créer un objet de cette classe, ( c'Est ma réponse, n'est-ce pas ?)
Votre raisonnement est correct. La syntaxe dans votre post n'est pas. Vous devez supprimer la première ligne. Dans le cas où "cela" ne fonctionne pas en tant que paramètre, il serait tout autre objet existe dans votre code contenant le script javascript visible méthodes.
OriginalL'auteur IshRoid