首页 > 解决方案 > webview-window.getselection() 值即将变为 null

问题描述

我正在开发一个 android 应用程序,它有一个WebView. 在这个 web 视图中,当我选择 html 文本并执行window.getSelection()即将到来的任何操作时null

一种 javascript 方法window.getSelection()不会每次都从 WebView 返回选定的文本。许多开发人员为此向 Google 提出了问题,但没有解决方案。https://issuetracker.google.com/issues/36925404

我尝试了所有可能的选项来获取选择对象,例如

window.getSelection(); window.doument.getSelection(); document.getSelection(); EReader.Selection.Range.getCurrentRange();

你有什么建议吗?

标签: androidwebview

解决方案


如果 Android API >= 19,您可以使用 evaluateJavascript:

webview.evaluateJavascript("(function(){return window.getSelection().toString()})()",
new ValueCallback<String>()
{
    @Override
    public void onReceiveValue(String value)
    {
        Log.v(TAG, "SELECTION:" + value);
    }
});

在旧版本上,您应该通过 webview.loadUrl 调用传递相同的内容:

webview.loadUrl("javascript:js.callback(window.getSelection().toString())");

其中 js 是附加的 javascript 接口:

webview.getSettings().setJavaScriptEnabled(true);
webview.addJavascriptInterface(new WebAppInterface(), "js");

public class WebAppInterface
{
    @JavascriptInterface
    public void callback(String value)
    {
        Log.v(TAG, "SELECTION:" + value);
    }
}

参考


推荐阅读