gpt4 book ai didi

javascript - Android:在 webview 上使用 javascript 返回字符串

转载 作者:行者123 更新时间:2023-11-30 00:29:32 25 4
gpt4 key购买 nike

我的目标是将字符串设置为等于加载到我的 web View 中的 HTML 页面内的文本。这是 HTML 代码:

<!DOCTYPE html>
<html>
<body>
<span class="txtTitle" style="color:#f93f3f; font-size:17px;">Hello World</span>
</body>
</html>

我想知道的是在字符串中传递“Hello World”。

我已经完成的是:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView view = (WebView) findViewById(R.id.webView);
WebSettings asd = view.getSettings();
String url = "http://example.net";
asd.setJavaScriptEnabled(true);
view.loadUrl(url);
view.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
String text;
text = view.loadUrl("javascript:document.getElementsByClassName('txtTitle')[0].innerHTML");
}
});
}

当然,它会给我一个错误,指出 loadValue() 不能是字符串。有什么建议吗??

最佳答案

您可以将 javascript 绑定(bind)到 android 代码以返回一个字符串。

阅读更多:http://developer.android.com/guide/webapps/webview.html#BindingJavaScript

这是一个实现您的目标的简单示例。

public class MainActivity extends Activity {

WebView view;
JSInterface api;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

view = (WebView) findViewById(R.id.webView);
api = new JSInterface();
WebSettings asd = view.getSettings();

asd.setJavaScriptEnabled(true);
view.addJavascriptInterface(api, "api");

String url = "file:///android_asset/index.html";
view.loadUrl(url);
view.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}

public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:api.getString(document.getElementsByClassName('txtTitle')[0].innerHTML)");
}
});
}

private class JSInterface {

@JavascriptInterface
public void getString(String str) {
Log.d("STRING", str);
}

}
}

关于javascript - Android:在 webview 上使用 javascript 返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30134076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com