如何在使用Javascript / jQuery发送到剪贴板之前搜索/替换正在复制的文本?

时间:2016-07-28 08:35:55

标签: javascript jquery clipboard copy-paste

我设法使用this answer中的代码(第二个选项)为正在复制的内容添加文本。但是,当我更改字符串连接并添加对replace的调用时,我收到错误“替换不是函数”。

copytext = window.getSelection().replace(/some pattern/, 'replace value'); // Fails

“选择”对象似乎非常复杂,我甚至无法在其中找到文本。我可以在其上调用toString,但这不是一个选项,因为我从一个可信的div复制HTML,我需要保留格式。

我正在尝试这样做,因为我在div的内容中有相对链接,并且由于某种原因它们被转换为复制文本中的绝对链接。只有从rawgit访问my demo时才会发生这种情况。在当地,它可以正常工作。

关于如何实现这一目标的任何想法?

更新

这是我当前设置的jsfiddle:https://jsfiddle.net/8kx8v8pb/

2 个答案:

答案 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');

我希望这会有所帮助