Скрипт использует глобальный объект URL для анализа URL-адресов ссылок. Отладка показала, что, хотя исходный URL-адрес выглядит правильно сформированным в HTML, получение его параметра запроса name возвращает искаженное значение с кучей символов, замененных символами с кодом 65533, поэтому впоследствии мой сценарий не может понять результат.
Исследование проблемы дало два вывода: вызов decodeURIComponent() для свойства URL-адреса search завершился неудачно, но unescape() создает что-то, что невозможно прочитать, но, по крайней мере, отдаленно похоже на действительную строку. Это побудило меня попытаться декодировать строку, поэтому я придумал следующий код:
Код: Выделить всё
let search = unescape(url.search);
if(search != url.search)
{
const d = new TextDecoder('cp1251'); // encoding was just a guess that worked.
search = d.decode(Uint8Array.from(search, c => c.charCodeAt(0)));
url.search = search;
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... cter-codes
Мобильная версия