gpt4 book ai didi

javascript - 通过 javascript 更改选定的文本

转载 作者:可可西里 更新时间:2023-11-01 13:26:43 25 4
gpt4 key购买 nike

window.addEventListener("keydown", function(e){
/*
keyCode: 8
keyIdentifier: "U+0008"
*/
if(e.keyCode === 16 && getSelectionText() != "") {
e.preventDefault();
replaceSelectedText(strcon(getSelectionText()));
}
});

function getSelectionText() {
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
return text;
}

function strcon(givenString) {
var b = '';
var a = givenString;
for (i = 0; i < a.length; i++) {
if (a.charCodeAt(i) >= 65 && a.charCodeAt(i) <= 90) {
b = b + a.charAt(i).toLowerCase();
}
else
b = b + a.charAt(i).toUpperCase();
}
return b;
}

function replaceSelectedText(replacementText) {
var sel, range;
if (window.getSelection) {
sel = window.getSelection();
if (sel.rangeCount) {
range = sel.getRangeAt(0);
range.deleteContents();
range.insertNode(document.createTextNode(replacementText));
}
} else if (document.selection && document.selection.createRange) {
range = document.selection.createRange();
range.text = replacementText;
}
}

我现在的代码似乎改变了实际文本的外观,而不是实际改变它。例如,当我在 Facebook 上按下某个键时,文本似乎发生了变化,但当我按下回车键时,文本又恢复到原来的样子。

我认为问题出在 replaceSelectedText 函数上,但我不确定如何修复它。

有什么想法吗?

请不要使用 JQuery。

https://jsfiddle.net/1rvz3696/

最佳答案

您必须让 textarea 元素替换其中的值。这就是您的 replaceSelectedText 函数的样子,

function replaceSelectedText(text) {
var txtArea = document.getElementById('myTextArea');
if (txtArea.selectionStart != undefined) {
var startPos = txtArea.selectionStart;
var endPos = txtArea.selectionEnd;
selectedText = txtArea.value.substring(startPos, endPos);
txtArea.value = txtArea.value.slice(0, startPos) + text + txtArea.value.slice(endPos);
}
}

这是 Fiddle .

没有具体的id,可以将txtArea替换成这个。

var txtArea = document.activeElement;

还有一个Fiddle

关于javascript - 通过 javascript 更改选定的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36904646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com