我正在尝试使用Javascript替换Chrome中任意选定TEXTAREA节点中的选定文本(!不是内容可编辑的div!)我在很多地方看到重复替换选定文本的代码片段基本上是这样的:
var sel = window.getSelection();
var range = sel.getRangeAt(0);
range.insertNode( document.createTextNode("test "));
但是,这不适用于 TEXTAREA 或 INPUT TYPE=TEXT 等输入字段。文本插入到 TEXTAREA 之前,而不是在其中。
有一种替代方法可以使用 textarea.selectionStart 和 textarea.selectionEnd 修改文本区域内的选择文本。但是,这些需要弄清楚哪个 textarea 元素实际上是活动/选择的。Chrome/Webkit document.activeElement 好像坏了,坏了好久。我想不出任何解决方法来找到“当前选定的文本区域”。看到这里的错误...
http://code.google.com/p/chromium/issues/detail?id=14436
你可以在这里看到我试图解决的问题的微演示。
http://dj1.willowmail.com/~jeske/_drop/insertIssue/1.html
http://ajaxandxml.blogspot.com/2007/11/emulating-activeelement-property-with.html
对此有什么想法吗?
给定一个网页,在任意 TEXTAREA 节点中选择了任意位文本,但事先不知道焦点在哪个文本区域,我如何找到活动的文本区域并用其他文本替换选定的文本?
((仅供参考:我在 Chrome 扩展程序中使用此代码。页面内 javascript 内容脚本正在扩展页面 javascript,所以我不知道页面结构是什么提前。它需要适用于任何网页。 ))