【问题标题】:Is It Possible to get text of undo in javascript是否可以在javascript中获取撤消文本
【发布时间】:2016-11-18 07:42:38
【问题描述】:

是否有可能获得我将在撤消时返回的“文本”。例如:我有两段

Para1
Para2 <--- deleting para2 using backspace

当我执行 ctrl+z 或 undo 时,para2 将被取回。 javascript中有什么方法可以在撤消选项中返回'para2'(我想在某个js变量中获取'para2'。我知道它会自动进入编辑器)?搜索了很多,但没有得到任何解决方案。任何帮助将不胜感激

P.S:我需要这个,因为我想在撤消时删除我的 html 中的一些属性。

【问题讨论】:

  • 什么元素包含这个para
  • 我非常怀疑是否有免费获取该信息的途径,您需要自己进行跟踪。但是,如果您可以更具体一些会有所帮助:这是在 contenteditable 元素中吗?文本区?输入?
  • 除非您将其动态加载到 var 中,然后对其进行处理。 CTRL-Z 和 CTRL-V / 剪切和粘贴 - 是操作系统功能,而不是任何网络语言的功能。
  • @GuruprasadRao 可以是任何可以撤消的东西。在我的例子中,它的 contenteditable div

标签: javascript jquery undo undo-redo


【解决方案1】:

更新 2

由于OP的问题有所变化,我将在最后一次解决这个问题。

P.S:我需要这个,因为我想在撤消时删除我的 html 中的一些属性。

撤消 检索已删除的文本

删除删除文本

如果您的 html 中有大量属性,请使用文本编辑器的替换功能。你用什么文本编辑器?


更新 1

新增功能getUndone()。执行以下测试:

  1. 删除一些文本。
  2. 点击按钮。
  3. 点击获取按钮。
  4. 文本的撤消部分将按预期返回。
  5. 撤消的文本也存储在一个变量中(即sel)。
  6. 撤消的文本也在剪贴板中。
  7. 撤消的文本也会显示出来。

  8. 使用execCommand('undo') 撤消。

  9. 使用execCommand('copy') 存储在剪贴板中。
  10. 使用window.getSelection()检索选定的文本并存储在sel中。
  11. 使用.toString() 显示撤消的文本。

execCommand API 用于创建文本编辑器。它有大量的方法和属性。以下代码段有bold, italics, underlineundo

 document.execCommand( 'undo',false,null);

片段

<!DOCTYPE html>
<html>

<head>
  <meta charset='utf-8'>
  <style>
    body {
      font: 400 16px/1.4'serif';
    }
    #editor1 {
      border: 3px inset grey;
      height: 100px;
      width: 381px;
      margin: 10px auto 0;
    }
    fieldset {
      margin: 2px auto 15px;
      width: 358px;
    }
    button {
      width: 5ex;
      text-align: center;
      padding: 1px 3px;
    }
  </style>
</head>

<body>

  <div id="editor1" contenteditable="true">
    The quick brown fox jumped over the lazy dog.
  </div>
  <fieldset>
    <button class="fontStyle" onclick="document.execCommand('italic',false,null);" title="Italicize Highlighted Text"><i>I</i>
    </button>
    <button class="fontStyle" onclick="document.execCommand( 'bold',false,null);" title="Bold Highlighted Text"><b>B</b>
    </button>
    <button class="fontStyle" onclick="document.execCommand( 'underline',false,null);"><u>U</u>
    </button>
    <button class="fontStyle" onclick="document.execCommand( 'undo',false,null);"><b>&#10554;</b>
    </button>
    <button class="fontStyle" onclick="getUndone()">Get</button>
    <br/>
    <label for='data'>Data:
      <input id="data">
    </label>
  </fieldset>
  <script>
    function getUndone() {
      var data = document.getElementById('data');
      var sel = window.getSelection();
      document.execCommand('undo', false, null);
      document.execCommand('copy', false, null);
      data.value = sel.toString();

    }
  </script>

【讨论】:

  • 你还没有理解我的问题。我想获取将在撤消而不是撤消执行命令时返回的文本
  • 这没有意义。撤消中的文本可以使用撤消命令检索。您说“在我的情况下它的 contenteditable div” 这是在 contenteditable div 上检索撤消文本的示例。你试过片段吗?它是标有 Run code sn-p 的蓝色按钮
  • retrived 表示在某些 javascript 变量中检索。用更清晰的解释更新问题
  • @AnkurAggarwal 查看更新。我相信我理解你所说的,而不是你的意思
猜你喜欢
  • 1970-01-01
  • 2012-08-12
  • 2015-05-10
  • 2015-01-17
  • 2013-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多