Android的WebView的Javascript getSelection

我有一些麻烦从Android中的WebView的select。

我可以让WebView进入select模式。 我甚至可以把它复制到剪贴板的文本。 但是我真正想要做的是永久地突出select。

所以这个想法是把WebView放在select模式下。 让用户select文本,然后触发某些内容以突出显示该文本。 我可以通过从剪贴板中获取选定的文本,然后在Javascript中search并突出显示它。 当用户select一个真正的常用词时就会出现问题。 我必须要么突出全部或以某种方式找出select是哪里得到正确的。

我试过这个在iPhone上运行的JavaScript。 Bu getSelection()似乎不适用于Android。

function highlight(colour) { var range, sel; if (window.getSelection) { // Non-IE case sel = window.getSelection(); if (sel.getRangeAt) { range = sel.getRangeAt(0); } document.designMode = "on"; if (range) { sel.removeAllRanges(); sel.addRange(range); } // Use HiliteColor since some browsers apply BackColor to the whole block if ( !document.execCommand("HiliteColor", false, colour) ) { document.execCommand("BackColor", false, colour); } document.designMode = "off"; } else if (document.selection && document.selection.createRange) { // IE case range = document.selection.createRange(); range.execCommand("BackColor", false, colour); } } 

有什么build议么?

Solutions Collecting From Web of "Android的WebView的Javascript getSelection"

当WebView进入“select模式”时,WebView实际上并未被用于select…它被模拟文本位置的“WebTextView”(Android的武器库中的私有类)推入,但允许图像显示,并允许您“select”出现在实际HTML中的文本。 在“select”文本之后尝试与WebView进行交互时会出现问题。 突出显示和光标句柄位于正确的位置,但实际上它们是在我提到的特殊的WebTextView中,因此实际上并没有通过JavaScript的getSelection或JavaScript中的任何其他方式进行select。 我正在做的ACTION_DOWN(的LongPress)触发select和释放的阻力和ACTION_UP拖动工作通过JavaScript的工作,但它是非常毛茸茸的,在这一点上都不友好用户…

http://www.java2s.com/Open-Source/Android/android-core/platform-frameworks-base/android/webkit/WebTextView.java.htm

检查来源(这是很多工作来模仿文本select,而不是提供它)这是令人伤心的,目前,我们的团队已经承担了一个项目,特别是在做同样的应用程序的iPad之后非常痛苦…

最后,在Android 4.4 KitKat中,WebView现在基于Chromium。

因此我们可以访问window.getSelection()

 wv.evaluateJavascript("console.log(window.getSelection().baseNode.nodeValue);", null); 

testingNexus 5和Nexus 7。

你应该尝试rangy – 一个跨浏览器的JavaScript范围和select库。