Javascript通过Bookmarklet编辑选择文本

时间:2015-11-09 21:30:36

标签: javascript bookmarklet

我正在尝试创建一个简单的书签(带有javascript applet的书签),它将获取所选文本,反转它,然后在屏幕上更改它。例如,如果用户选择一些文本,比如单词hello,然后激活此bookmarklet,则文本将变为olleh。到目前为止,我有以下内容:

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);

我从here获得了getSelectedText()功能。最后,小书签只是提醒反转的文本。你怎么做到它实际上取代了页面上的文字?提前感谢您提供任何可能的帮助。

1 个答案:

答案 0 :(得分:0)

您可以将其添加到最后:

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

修改

在正确的位置使用选择偏移进行倒车,str.replace仅替换单词的第一个出现位置,对于常见单词,例如""

,这可能是错误的。
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;