【问题标题】:Prevent `document.execCommand("copy")` from replacing ampersands防止 `document.execCommand("copy")` 替换 & 符号
【发布时间】:2019-02-12 10:03:53
【问题描述】:

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

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

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

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

变成

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

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

为什么会这样?有没有办法改变copy 的行为,或者我可以对剪贴板项目进行一些后处理?如果做不到这一点,有人知道是否可以将段配置为更智能地提取参数?

更新

经调查,$temp.val() 似乎负责用&amp;amp; 替换&amp;(我不确定这个术语是什么 - 清理它?)然后在浏览器中粘贴 url 时@ 987654330@ 被清理为%3B。但我不明白为什么要清理val(),是否可以在我的临时元素上设置属性/属性,或者使用不同类型的元素?

【问题讨论】:

  • 可能是$temp.value?
  • 提供一个可运行的演示,重现其他人可以根据minimal reproducible example 测试的问题。您可以通过在问题编辑器中单击 &lt;&gt; 使其在页面中可运行
  • myUrl 来自哪里?

标签: javascript jquery segment-io


【解决方案1】:

感谢评论建议,我想通了。这是因为 myUrl 来自 django 模板变量:

{{ original.my_url }}

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

{{ original.my_url | safe }}

现在复制 url 而不做修改。谢谢你的建议!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 2015-07-11
    • 2020-06-24
    • 2016-03-26
    • 1970-01-01
    • 2011-12-18
    相关资源
    最近更新 更多