我正在尝试使用上下文菜单中调用的函数 switchText 将所选文本替换为另一个文本。
function switchText(info) {
var text = info.selectionText; // selected text
// then I do some manipulations with 'text' and get 'text_to_replace'
var text_to_replace = "some text"; // text to replace
}
提醒(文字)和提醒(text_to_replace)工作正常,但我正在尝试替换页面上的所选文字,但我无法弄清楚如何去做吧。我尝试了不同的方法,但他们没有工作。需要什么特殊权限?如果这是一个愚蠢的问题,我很抱歉,我是JS的初学者。
答案 0 :(得分:1)
如果您希望能够在页面的任何位置执行此操作,则需要能够为您的选择设置某种识别ID。您必须通过某种内容脚本执行此操作。您可以在Chrome Developer documentation中详细了解相关信息。
(仅在Chrome中测试)
function switchText(id) {
// Gets the selection range
// This is from Tim Down, linked below
var range, sel = window.getSelection();
if (sel.rangeCount && sel.getRangeAt) {
range = sel.getRangeAt(0);
}
// Creates a new node range
document.designMode = "on";
if (range) {
sel.removeAllRanges();
sel.addRange(range);
}
// This is from user YeppThatsMe, also linked below
document.execCommand("insertHTML", false, "<span id='own-id'>"+ document.getSelection()+"</span>");
document.designMode = "off";
// You can use either a variable or a string
var someNewText = "-- You can make this whatever you want --";
// Finds the new span and replaces the selection with your new text
document.getElementById("own-id").innerHTML=someNewText;
};
我没有花太多时间进行测试,而且脚本按原样只会更改每页一个选项。您需要调整函数获取标记和属性信息的方式(将其更改为getElementsByClassName
?)以多次运行它,但这应该有效。
答案 1 :(得分:0)
更新由Id
定位的html元素document.getElementById("idtotarget").innerHTML = switchText(document.getElementById("idtotarget").innerHTML)