2015-11-09 2 views
0

Я пытаюсь сделать простой букмарклет (закладка с апплетами javascript), который получит выделенный текст, отменит его, а затем изменит его на экране. Например, если пользователь выбирает какой-либо текст, скажем, слово hello, а затем активирует этот букмарклет, текст затем превращается в olleh. До сих пор у меня есть следующие:Редактирование текста Javascript с помощью закладки.

javascript: 
function getSelectedText() { 
var text = ""; 
if (window.getSelection) { 
    text = window.getSelection().toString(); 
} else if (document.selection && document.selection.type != "Control") { 
    text = document.selection.createRange().text; 
} 
    return text; 
} 
var selectedText = getSelectedText(); 
var textArray = selectedText.split(""); 
var reverseArray = textArray.reverse(); 
var reverseText = reverseArray.join(""); 
alert(reverseText); 

Я получил функцию getSelectedText() от here. В конце, букмарклет просто предупреждает об обратном тексте. Как вы делаете это так, чтобы он фактически заменял текст на странице? Заранее благодарим за любую возможную помощь.

ответ

0

Вы можете добавить это к концу:

var nodeValue = window.getSelection().baseNode.nodeValue; 
window.getSelection().baseNode.nodeValue = nodeValue.replace(selectedText, reverseText); 

EDIT

Используйте выбор смещения для реверсирования в нужном месте, str.replace заменяет только первое вхождение слова, и это может быть неправильно для обычных слов, таких как «the».

var selection = window.getSelection(); 
var start = selection.anchorOffset; 
var end = selection.focusOffset; 
var nodeValue = selection.baseNode.nodeValue; 
var newValue = nodeValue.slice(0, start) + reverseText + nodeValue.slice(end); 
window.getSelection().baseNode.nodeValue = newValue; 
+0

Этот вид работ. Кажется, я помню, что пробовал что-то, что дало тот же результат, который заменяет весь текст на странице. Я думаю, что это сработает, если бы он помещался в веб-страницу с тегом '