Tengo problemas para obtener la selección de una WebView en Android.Android WebView Javascript getSelection
Puedo obtener el WebView para pasar al modo de selección. Incluso puedo obtenerlo para copiar el texto al ClipBoard. Pero lo que realmente quiero hacer es resaltar la selección de forma permanente.
Así que la idea es poner WebView en el modo de selección. Permita que el usuario seleccione el texto y luego encienda algo para resaltar ese texto. Puedo hacer que funcione obteniendo el texto seleccionado del portapapeles, y luego buscarlo en Javascript y resaltarlo. El problema ocurre cuando el usuario selecciona una palabra común real. Tengo que resaltarlos a todos o de alguna manera averiguar dónde está la selección para obtener la correcta.
He intentado este JavaScript que funciona en el iPhone. Bu getSelection() no parece funcionar en 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);
}
}
¿Alguna sugerencia?
¿Cómo se llega a copiar el texto en el portapapeles? ¿Lo hace programáticamente o cuenta con que el usuario haga la selección manualmente? –