我想强调(应用css)某个文本范围,由其开始和结束位置表示.这比看起来更难以实现,因为文本中可能还有其他标记需要忽略.
例:
<div>abcd<em>efg</em>hij</div>
Run Code Online (Sandbox Code Playgroud)
highlight(2, 6)需要突出显示"cdef"不删除标签.
我已经尝试过使用TextRange对象,但没有成功.
提前致谢!
我在使用Android中的WebView进行选择时遇到了一些麻烦.
我可以让WebView进入选择模式.我甚至可以将它复制到ClipBoard.但我真正想做的是永久地突出选择.
因此,想法是将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);
}
} …Run Code Online (Sandbox Code Playgroud) 众所周知,在WebView中获取所选文本很困难,因为WebView文本选择实际上是由私有类WebTextView处理的.
然而,随着最近发布的Android 4.0设计指南,通过上下文操作栏(CAB)实现这一点似乎有一线希望.它说:
只要您允许用户通过长按选择数据,请使用CAB.您可以控制CAB的操作内容,以插入您希望用户能够执行的操作.
我误解了这个吗?有没有办法通过CAB从WebView检索所选文本?
在长时间单击和文本选择模式开始后,我当前可以检测到何时ActionMode启动并修改原始复制/粘贴Menu; 但是,我无法弄清楚如何实际检索所选文本.
android webview android-4.0-ice-cream-sandwich android-actionbar
android ×2
javascript ×2
webview ×2
android-4.0-ice-cream-sandwich ×1
selection ×1
textrange ×1