相关疑难解决方法(0)

execCommand() 现在已过时,有什么替代方法?

我打算使用Document.execCommand()方法和contenteditable属性来构建我的自定义 WYSIWYG 编辑器。但是当我查看 的文档时Document.execCommand(),我发现它现在已经过时了。它的现代(或现存)替代品是什么?

html javascript css execcommand

83
推荐指数
7
解决办法
3万
查看次数

Javascript textarea撤消重做

我正在制作一个小的javascript编辑器(用于chrome扩展),有点像SO上的那个.

有一个工具栏可以处理textarea中的文本.(例如用一些模板包围所选文本)

我想知道是否有一种简单的方法来实现这一点,目前在使用系统undo/redo时,它会混淆文本(我认为系统只跟踪编辑之间的增量).

javascript google-chrome-extension

15
推荐指数
2
解决办法
5804
查看次数

HTML 输入 - 以编程方式设置输入值时撤消历史记录丢失

我有一个 HTML 输入。当用户在其中输入内容时,我设置了“输入”事件来处理将输入更新为用户输入内容的过滤版本(以及更新选择开始和选择结束以获得流畅的用户体验)。为了达到适当的效果,这种情况会不断发生。

然而,我注意到,每当 JS 通过 设置输入的值时input.value = '...';,输入的撤消历史记录就会消失。也就是说,在聚焦的情况下按 Ctrl-Z 不再返回到之前的状态。

有什么方法可以提供输入自定义撤消历史记录,或者以其他方式防止它丢失历史记录,同时仍然更改其值?


这是我的问题的一个最小示例:
输入顶部输入(基本在每个字符之间添加句点)后,Ctrl-Z 不会撤消。

<body>
    <input type="text" id="textbox" placeholder="No undo"/><br/>
    <input type="text" id="textbox2" placeholder="Undo"/>
    <script>
        var tbx = document.getElementById("textbox");
        tbx.addEventListener('input', () => {
            tbx.value = tbx.value + '.'
        });
    </script>
</body>
Run Code Online (Sandbox Code Playgroud)

javascript undo html-input

8
推荐指数
1
解决办法
1749
查看次数

输入字段上的编程值更改会被 Ctrl-Z 忽略,并且无法“撤消”-ne

当我有一个包含特定值的输入字段,并且某些 JavaScript 更改其值时,我过去可以单击该字段并按 Ctrl-Z 来恢复旧值。

好像不行了,是不是浏览器最近更新了?我做错了什么吗?有办法让它再次发挥作用吗?

setTimeout(function () {
  document.getElementById("name").value = ""
}, 2000);
Run Code Online (Sandbox Code Playgroud)
<input type="text" id="name" value="Sylvain" />
Run Code Online (Sandbox Code Playgroud)

javascript dom undo undo-redo

7
推荐指数
0
解决办法
1425
查看次数

更改 &lt;textarea&gt; 的值并允许用户撤消

过去,当您使用 javascript设置valuea 时textarea,Firefox 允许用户撤消此更改(例如,通过按 ctrl+Z)。但是,这不再有效,并且似乎没有任何体面的替代方案。

我已经尝试使用document.execCommand修改的textarea,但是这需要你自己来选择要修改的文本,它不会出现有可能在自动选择文本textarea。

我也听说过,document.createEvent("TextEvent")但我找不到关于此的太多信息。看来只能在光标处插入文本,我也需要删除文本。

创建我自己的撤消/重做系统并捕获ctrl+ Z/Y按下不是一个可接受的解决方案。

这里已经问过类似的问题,但它们只涉及在光标处插入文本,而不是完全改变 textarea 的值。

html javascript firefox textarea undo-redo

5
推荐指数
1
解决办法
205
查看次数