我有一个html textarea,将通过javascript定期更新.
当我这样做:
$("#textarea").val(new_val);
Run Code Online (Sandbox Code Playgroud)
光标移动到文本的末尾.
我想在不改变光标位置的情况下更新文本.此外,如果用户选择了一系列文本,则应保留突出显示.
我正在创建一个Google Chrome扩展程序,通过内容脚本和事件页面与网页进行交互.
我有当用户点击被归类为一个元素上出现的上下文菜单选项editable由chrome.contextMenusAPI.
这些选项就像常用文本的快捷方式一样.当用户单击选项时,某些文本将放置在光标位置的元素内.如果用户突出显示文本,则会将其删除.
并非所有可编辑元素都可以以相同方式修改.
如果元素很简单textarea,则可以通过实现此解决方案来实现所需的结果:
但是,我不能假设我正常与正常人交往textarea.
可能的细微差别包括:
文本区域隐藏在一个内部Iframe,这使得查找要与之交互的元素的过程复杂化(document.activeElement可能返回Iframe,而不是实际包含文本的元素).
该<textarea>不会是一个<textarea>/ <input>所有,而是一个contentEditable <div>.该.value方法不能在这种情况下工作.
所以我正在寻找一种灵活的方法,可以优雅地处理所有边缘情况.
document.execCommand('paste')用来修改元素.然而,在尝试之后,这种方法似乎与我最初的方法具有相同的缺点.(请参阅此问题)Iframe问题,并且它不允许您使用特殊的Unicode字符.┻━┻(ヽ(`Д')ノ(┻━┻