3 ответов:
не видя вашего кода, трудно ответить, кроме удара в темноте. Я бы предположил, что строка, которую вы передаете encodeURIComponent(), который является правильным методом для использования, исходит из результата доступа к innerHTML собственность. Решение состоит в том, чтобы получить через свойство innerText/ textContent стоимости имущества вместо:
var str, el = document.getElementById("myUrl"); if ("textContent" in el) str = encodeURIComponent(el.textContent); else str = encodeURIComponent(el.innerText);Если это не так, вы можете использовать заменить() метод заменить объект HTML:
encodeURIComponent(str.replace(/&/g, "&"));
если вы сделали буквально это:
encodeURIComponent('&')результат
%26,вы можете проверить это здесь. Убедитесь, что строка, которую вы кодируете,просто&, а не&для начала...в противном случае это кодирование правильно, что, вероятно, имеет место. Если вам нужен другой результат по какой-то причине, вы можете сделать.replace(/&/g,'&')перед кодированием.
есть HTML и URI кодировки.
&и&закодировано в HTML пока%26- это&на кодировка URI.поэтому перед кодированием URI вашей строки вы можете декодировать HTML, а затем кодировать URI:)
var div = document.createElement('div'); div.innerHTML = '&AndOtherHTMLEncodedStuff'; var htmlDecoded = div.firstChild.nodeValue; var urlEncoded = encodeURIComponent(htmlDecoded);результат
%26AndOtherHTMLEncodedStuffнадеюсь, что это сэкономит вам некоторое время
Comments