簡體   English   中英

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

[英]Android: window.getSelection() does not work in webview

我有一個帶有網絡視圖的應用程序,並且我一直在嘗試從網絡視圖的主體中獲取用戶選擇的文本。 您可能會認為操作系統將能夠像iOS一樣處理某些事情,但這是Android完全不足的眾多地方之一。 我已經調查過該網站和Google,但沒有發現任何可以幫助我的信息。 幸運的是,我的應用程序具有JavaScript界面​​,可與我們加載到Web視圖中的腳本進行通信。 我以為我可以使用javascript從webview中選擇文本。 在chrome中,我可以使用以下javascript來做到這一點:

window.getSelection.toString();

現在我有一個按鈕,該按鈕在我的js文件中調用一個函數,該函數將運行上述命令,並將其結果返回給我的javascript接口中的方法。 該消息將敬酒我的javascript函數的結果。 所以我選擇文本,然后按此按鈕。 唯一的問題是我的吐司消息返回以下消息:

javascript returned:  

什么時候應該回來

javascript returned: <my selected text>

當我刪除'.toString(); 從我的javascript命令中選擇並選擇文本,然后按一下按鈕,我收到以下消息

javascript returned: undefined

為什么這不起作用?

這是上下文中的代碼。 這是被稱為的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();
        }

有適合我的解決方案

//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()");

因為文本選擇是在android上的單獨類WebTextView上發生的,所以如果我們嘗試使用javascript方法來獲取所選單詞,

var range = window.getSelection ();  

但是如果您希望所選的單詞,此函數將不返回任何內容,如果您希望稍后再添加該代碼,則可以對此使用反射。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM