У меня есть код, который должен открывать веб-сайт.
javascript:(function(){var google = function(){window.location='http://google.de?q=%3D%3D'};google()}())
При вставке кода в консоль (Chrome) веб-сайт открывается и URI правильно закодирован.
Используя тот же код в букмарклете JS, он открывает веб-сайт, но с декодированным URI, что приводит к сбою моей целевой страницы.
Что я могу сделать, чтобы букмарклет заработал?
PS: В этом примере я использую уже закодированный URI, размещение encodeURI
или encodeURIComponent
в букмарклете не помогло.
1 ответ
Специальные символы в URL-адресе декодируются при анализе URL-адреса.
Букмарклет - это URL-адрес.
Поэтому, когда букмарклет разбирается, специальные символы декодируются.
Это происходит до того, как URL-адрес внутри букмарклета будет проанализирован, поэтому они уже декодируются при его анализе.
Вкратце: у вас есть URL-адрес внутри другого URL-адреса. Вам нужно дважды закодировать специальные символы.
javascript:(function()%7Bvar%20google%20%3D%20function()%7Bwindow.location%3D'http%3A%2F%2Fgoogle.de%3Fq%3D%253D%253D'%7D%3Bgoogle()%7D())
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.