gpt4 book ai didi

javascript - 是否可以在 textarea 中插入文本并更新撤消/重做队列?

转载 作者:数据小太阳 更新时间:2023-10-29 04:38:48 26 4
gpt4 key购买 nike

几天前,我发布了一个question关于如何在 Internet Explorer 中更新文本。看起来,所使用的方法在 Firefox 中也不起作用。

这让我想到是否有办法修改文本区域的值并更新撤消/重做队列(调用 ctrl-Zdocument.execCommand('undo ');)

到目前为止,我发现了两种可能性,但它们并不适用于所有浏览器:

选项 1:

var event = document.createEvent('TextEvent');
event.initTextEvent('textInput', true, true, null, text, 9, "en-US");
textarea.focus();
textarea[0].setSelectionRange(selection.start, selection.end);
textarea[0].dispatchEvent(event);

注意:似乎在 IE(根本)和 Firefox 中不起作用

选项 2:

document.execCommand("insertText", false, "the text to insert");

在 IE 中不工作(在 9 下测试,但似乎根本没有实现),我不知道其他浏览器。

最佳答案

到目前为止,我提出的解决方案是这个,但我愿意接受更好的想法:

我通过 document.queryCommandSupported 检查 insertText 是否存在。如果它确实存在,我会使用它。如果没有,我只是替换文本:

var text = "hello world",
textarea = jQuery("textarea"),
selection = {'start': textarea[0].selectionStart, 'end': textarea[0].selectionEnd};

if (document.queryCommandSupported('insertText')) {
document.execCommand('insertText', false, text);
}
else {
textarea.val(textarea.val().substring(0, selection.start) + text + textarea.val().substring(selection.end, textarea.val().length));
}

关于javascript - 是否可以在 textarea 中插入文本并更新撤消/重做队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19814465/

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