防止`document.execCommand(“ copy”)`替换与符号

时间:2019-02-12 01:34:45

标签: javascript jquery segment-io

我有一个生成URL的工具,以及一个用于将生成的URL复制到剪贴板的按钮。此功能确实可以成功复制我的URL:

function copyUrlToClipboard() {
  var $temp = $("<input>");
  $("body").append($temp);
  $temp.val(myUrl).select();
  document.execCommand("copy");
  $temp.remove();
}

但是,在复制的URL中,与号字符替换为&amp%3B。例如,URL

mysite.com/?utm_source=se&utm_medium=foo

成为

mysite.com/?utm_source=se&amp%3Butm_medium=foo

不幸的是,我在下游使用了分段/幅度分析,无法从该URL提取参数。

为什么会这样?是否可以更改copy的行为,或者可以对剪贴板项目执行某些后处理?否则,是否有人知道段是否可以配置为更智能的参数提取?

更新

经调查,看来$temp.val()是用&代替&amp;的原因(我不确定这是什么术语-消毒吗?),然后粘贴浏览器中的URL ;被清除为%3B。但是我不明白为什么要对val()进行清理,是否可以在temp元素上设置属性/属性,或者要使用其他类型的元素?

1 个答案:

答案 0 :(得分:0)

感谢评论建议,我知道了。这是因为myUrl来自Django模板变量:

{{ original.my_url }}

事实证明,我不得不将此变量标记为safe

{{ original.my_url | safe }}

现在,它无需修改即可复制url。谢谢你的建议!