6

请告诉我如何将一些字符串值从活动传递到 web 视图。我在 DashboardActivity 中有加载 URL 的 webview,我想将该活动中的字符串值传递给 javaScript window.onload 函数使用的 webview。请告诉我这样做的方法。

4

2 回答 2

16

根据您的用例,有不同的方法可以实现这一点。难点在于你要在onload方法中做事。

如果可以在页面加载后传入字符串,则可以使用

String jsString = "javascript:addData('" + theString + "');");
webView.loadUrl(jsString);

如果您确实需要可在页面的 onload 方法上访问的数据,则可以修改调用的 url 以包含查询数据(如果可能)。就像是:

String urlWithData = yourUrl + "?data=" + theString;
webView.loadUrl(urlWithData);

然后使用标准 javascript 解析 window.location.search 以获取数据。

最后,如果由于某种原因无法修改 URL,可以使用回调对象让 javascript 获取值:

private class StringGetter {
   public String getString() {
       return "some string";
   }
}

然后在加载 url 之前使用此回调配置您的 webView:

webView.addJavascriptInterface(new StringGetter(), "stringGetter");

在页面的 onload 方法中,您可以使用:

var theString = stringGetter.getString();

希望这可以帮助!

于 2012-09-19T08:36:25.400 回答
2

如果在加载的网页上选择了输入字段,您可以尝试以下操作:

String pasteData = "a string value to paste into the webview"    
String javaScript = "javascript:document.activeElement.setAttribute('value','"+pasteData+"');";

mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.requestFocus(View.FOCUS_DOWN);
mWebView.loadUrl(javaScript);
于 2015-04-06T04:13:33.697 回答