gpt4 book ai didi

javascript - Android WebView Javascript getSelection

转载 作者:IT老高 更新时间:2023-10-28 22:15:05 25 4
gpt4 key购买 nike

我在从 Android 的 WebView 中获取选择时遇到了一些问题。

我可以让 WebView 进入选择模式。我什至可以让它将文本复制到剪贴板。但我真正想做的是永久突出选择。

所以想法是将 WebView 置于选择模式。让用户选择文本,然后触发一些东西来突出显示该文本。我可以通过从剪贴板中获取选定的文本来使其工作,然后在 Javascript 中搜索并突出显示它。当用户选择一个真正的常用词时,就会出现问题。我必须要么全部突出显示它们,要么以某种方式找出选择的位置以获得正确的选择。

我已经尝试过这个适用于 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);
}
}

有什么建议吗?

最佳答案

当 WebView 进入“选择模式”时,WebView 实际上并没有用于选择...它被推送到模仿文本位置的“WebTextView”(Android 库中的私有(private)类)下,但允许图像显示,并允许您“选择”出现在实际 HTML 中的文本。当您在“选择”文本后尝试与 WebView 交互时,就会出现问题。高亮和光标句柄位于正确的位置,但它们实际上位于我提到的特殊 WebTextView 中,因此您实际上没有通过 JavaScript 的 getSelection 或 JavaScript 中的任何其他方式获得的选择。我正在努力使触发选择的 ACTION_DOWN(LongPress 的)以及从拖动中释放的拖动和 ACTION_UP 通过 JavaScript 为我工作,但它非常多毛,而且在这一点上一点也不友好......

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

检查来源(模仿文本选择而不是提供它需要做很多工作)对于我们团队开展的一个项目来说,这是可悲的,目前也非常痛苦——尤其是在为 iPad 开发了相同的应用程序之后……

关于javascript - Android WebView Javascript getSelection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4892111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com