Запретить `document.execCommand("copy")` заменить амперсанды
У меня есть инструмент, который генерирует URL-адреса, и кнопка для копирования сгенерированного URL-адреса в буфер обмена. Эта функция успешно копирует мой URL:
function copyUrlToClipboard() {
var $temp = $("<input>");
$("body").append($temp);
$temp.val(myUrl).select();
document.execCommand("copy");
$temp.remove();
}
Однако в скопированном URL-адресе символы амперсанда заменяются на &%3B
, Например, URL
mysite.com/?utm_source=se&utm_medium=foo
становится
mysite.com/?utm_source=se&%3Butm_medium=foo
К сожалению, я использую аналитику сегмента / амплитуды вниз по течению, которая не может извлечь параметры из этого URL.
Почему это происходит? Есть ли способ изменить поведение copy
или какую-то постобработку, которую я могу сделать для элемента буфера обмена? Если это не удастся, кто-нибудь знает, можно ли сконфигурировать сегмент, чтобы он был умнее при извлечении параметров?
Обновление:
После расследования выясняется, что $temp.val()
отвечает за замену &
с &
(Я не уверен, что термин для этого - очистить его?), А затем после вставки URL в браузере ;
очищается как %3B
, Но я не понимаю почему val()
выполняется очистка, есть ли свойство / атрибут, который я могу установить для моего временного элемента, или другой тип элемента для использования?
1 ответ
Я понял это благодаря комментариям предложений. Это было потому что myUrl
исходил из переменной шаблона django:
{{ original.my_url }}
Как оказалось, мне пришлось пометить эту переменную как безопасную:
{{ original.my_url | safe }}
Это теперь копирует URL без изменений. Спасибо за предложения!