我设法使用this answer中的代码(第二个选项)为正在复制的内容添加文本。但是,当我更改字符串连接并添加对replace
的调用时,我收到错误“替换不是函数”。
copytext = window.getSelection().replace(/some pattern/, 'replace value'); // Fails
“选择”对象似乎非常复杂,我甚至无法在其中找到文本。我可以在其上调用toString
,但这不是一个选项,因为我从一个可信的div复制HTML,我需要保留格式。
我正在尝试这样做,因为我在div的内容中有相对链接,并且由于某种原因它们被转换为复制文本中的绝对链接。只有从rawgit访问my demo时才会发生这种情况。在当地,它可以正常工作。
关于如何实现这一目标的任何想法?
更新
这是我当前设置的jsfiddle:https://jsfiddle.net/8kx8v8pb/
答案 0 :(得分:0)
您需要将其强制转换为字符串(getSelection()
返回Selection对象)。
因此,在执行.toString()
.replace()
的字符串
所以在你的情况下,代码应该是这样的:
copytext = (window.getSelection() + "").replace(/some pattern/, 'replace value');
或
copytext = (window.getSelection().toString()).replace(/some pattern/, 'replace value');
来源:https://developer.mozilla.org/en-US/docs/Web/API/Window/getSelection
答案 1 :(得分:0)
选择是一个对象,因此如果要在其文本上运行替换功能,请使用以下内容。
window.getSelection().anchorNode.data.replace(/some pattern/, 'replace value');
我希望这会有所帮助