Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Android:window.getSelection()在webview中不起作用_Javascript_Android_Dom_Android Webview_Textselection - Fatal编程技术网

Javascript Android:window.getSelection()在webview中不起作用

Javascript Android:window.getSelection()在webview中不起作用,javascript,android,dom,android-webview,textselection,Javascript,Android,Dom,Android Webview,Textselection,我有一个带有webview的应用程序,我一直在尝试从webview的主体中获取用户选择的文本。你可能会认为操作系统能够像iOS那样处理一些事情,但这是Android完全不适合的地方之一。我浏览了这个网站和谷歌,没有发现任何对我有帮助的东西。幸运的是,我的应用程序有一个javascript接口,可以与加载到webview中的脚本进行通信。我想我可以使用javascript从webview中选择文本。在chrome中,我可以通过以下javascript实现这一点: window.getSelecti

我有一个带有webview的应用程序,我一直在尝试从webview的主体中获取用户选择的文本。你可能会认为操作系统能够像iOS那样处理一些事情,但这是Android完全不适合的地方之一。我浏览了这个网站和谷歌,没有发现任何对我有帮助的东西。幸运的是,我的应用程序有一个javascript接口,可以与加载到webview中的脚本进行通信。我想我可以使用javascript从webview中选择文本。在chrome中,我可以通过以下javascript实现这一点:

window.getSelection.toString();
现在我有一个按钮,它在我的js文件中调用一个函数,该函数将运行上面的命令,并将其结果返回给javascript界面中的一个方法。这条消息将显示我的javascript函数的结果。所以我选择文本,然后按下这个按钮。唯一的问题是my toast消息返回以下消息:

javascript returned:  
什么时候应该回来

javascript returned: <my selected text>
为什么这不起作用

这是我在上下文中的代码。这是被调用的hte javascript:

myNameSpace.getTextSelection = function()
        {
            var str;
            if (window.getSelection){
                str = window.getSelection().toString();
            } else {
                str = 'does not';
            }
            window.myJSHandler.getSelectedText(str);
        };
这是它正在调用的java函数

public void getSelectedText(String text)
        {
            String str = "function called.  it returned: " + text;
            Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show();
        }

因为文本选择是在android中一个单独的类WebTextView上进行的,所以如果我们尝试使用javascript方法获取所选的单词-

var range = window.getSelection ();  

但是,如果您想要所选单词,此函数将不返回任何内容。如果您想要,您可以使用反射,以防我稍后添加该代码。

因为文本选择是在android中的一个单独类WebTextView上进行的,所以如果我们尝试使用javascript方法获取所选单词-

var range = window.getSelection ();  

但是,如果您想要选定的单词,此函数将不返回任何内容。如果您想要,可以使用反射,以防我稍后添加该代码。

获得了适合我的解决方案。

//I am using below line of code which works in both android and web browsers.

function getSelectedText() {
    var selection = null;

    if (window.getSelection) {
        selection = window.getSelection();
    } else if (typeof document.selection != "undefined") {
        selection = document.selection;
    }

    var selectedRange = selection.getRangeAt(0);

    console.log(selectedRange.toString());
}
注意:不要在post中或在任何可运行接口内调用此方法,因为post或任何可运行接口会延迟调用此方法(方法调用发生在浏览器选择释放后)。只要像这样调用这个方法

webView.loadUrl("javascript:getSelectedText()");

找到了适合我的解决方案

//I am using below line of code which works in both android and web browsers.

function getSelectedText() {
    var selection = null;

    if (window.getSelection) {
        selection = window.getSelection();
    } else if (typeof document.selection != "undefined") {
        selection = document.selection;
    }

    var selectedRange = selection.getRangeAt(0);

    console.log(selectedRange.toString());
}
注意:不要在post中或在任何可运行接口内调用此方法,因为post或任何可运行接口会延迟调用此方法(方法调用发生在浏览器选择释放后)。只要像这样调用这个方法

webView.loadUrl("javascript:getSelectedText()");

拉维,请加上这个反射拉维,请加上这个反射