Запретить `document.execCommand (" copy ")` заменить амперсанды - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть инструмент, который генерирует 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() очищается, есть ли свойство / атрибут, который я могу установить для моего временного элемента, или другой тип элемента для использования?

1 Ответ

0 голосов
/ 12 февраля 2019

Я понял это благодаря комментариям.Это потому, что myUrl исходило из переменной шаблона django:

{{ original.my_url }}

Как оказалось, мне пришлось пометить эту переменную как safe :

{{ original.my_url | safe }}

Теперь копирует URL без изменений.Спасибо за предложения!

...