webview与js交互
时间: 2023-08-01 17:06:30 浏览: 130
在 Android 中,WebView 是一个内置的浏览器控件,可以加载网页并在应用程序中显示。WebView 与 JavaScript 的交互是常见的需求,主要有以下几种方式:
1. 通过 WebView 中的 loadUrl() 方法调用 JavaScript 函数。
可以使用 WebView 的 loadUrl() 方法加载一个包含 JavaScript 代码的 URL,实现与 JavaScript 的交互。例如,在 JavaScript 中定义一个函数:
```javascript
function showToast(message) {
alert(message);
}
```
然后在 Android 中使用 loadUrl() 方法调用这个函数:
```java
webView.loadUrl("javascript:showToast('Hello World!')");
```
2. 在 WebView 中启用 JavaScript,并使用 addJavascriptInterface() 方法将 Java 对象注入到 JavaScript 中。
可以在 WebView 中启用 JavaScript 支持,并使用 addJavascriptInterface() 方法将 Java 对象注入到 JavaScript 中。这样,JavaScript 就可以调用 Java 对象的方法。例如,在 Java 中定义一个类:
```java
public class MyJavaScriptInterface {
private Context context;
public MyJavaScriptInterface(Context context) {
this.context = context;
}
@JavascriptInterface
public void showToast(String message) {
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
}
}
```
然后在 WebView 中启用 JavaScript 支持,并将 MyJavaScriptInterface 对象注入到 JavaScript 中:
```java
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new MyJavaScriptInterface(this), "Android");
```
在 JavaScript 中就可以调用 MyJavaScriptInterface 对象的 showToast() 方法:
```javascript
Android.showToast("Hello World!");
```
3. 使用 evaluateJavascript() 方法执行 JavaScript 代码并获取返回值。
可以使用 WebView 的 evaluateJavascript() 方法执行 JavaScript 代码,并通过回调函数获取返回值。例如,在 JavaScript 中定义一个函数:
```javascript
function add(a, b) {
return a + b;
}
```
然后在 Android 中使用 evaluateJavascript() 方法执行这个函数,并获取返回值:
```java
webView.evaluateJavascript("add(1, 2)", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
// value = "3"
}
});
```
以上就是 WebView 与 JavaScript 的交互方式,开发者可以根据需求选择适合自己的方式。
阅读全文