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

标签 javascript android string webview

我的目标是将字符串设置为等于加载到我的 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/

相关文章:

Python:提取字符串内标签之间的所有子字符串

javascript - 在图表js中鼠标悬停绘制水平和垂直线

javascript - 搜索脚本不查找单个单词

javascript - 创建按钮 onclick 函数以充当箭头键的作用

android - Android 上 USB 麦克风的 AudioSource 值

java - 如何从 ion 返回全局变量?

javascript - 计算递归中的重复值

android - 如何以编程方式为TextInputLayout设置colorControlActivated

Python - 输入字符串上的正则表达式以格式化文件名中的空格

java - 在java中初始化和传递字符串