Должен ли букмарклет JavaScript быть действительным URL-адресом?

Я искал вокруг, но не могу найти никакой информации об этом; может быть, я не использую лучшие условия поиска.

Должен ли букмарклет JavaScript, т. е. ссылка, использующая псевдопротокол «javascript:», которую можно перетащить в адресную строку браузера и открыть на любой странице, быть действительным URL-адресом? Я слышал, что это так, но я хотел бы найти окончательный ответ.

В Google Reader есть букмарклет Note in Reader, в котором используется следующий код JavaScript:

javascript:var%20b=document.body;var%20GR________bookmarklet_domain='http://www.google.com';if(b&&!document.xmlVersion){void(z=document.createElement('script'));void(z.src='http://www.google.com/reader/ui/link-bookmarklet.js');void(b.appendChild(z));}else{}

Закодированные пробелы (% 20) кажутся попыткой придерживаться действительного URL-адреса, но являются ли, например, фигурные скобки и точки с запятой допустимыми символами URL-адреса?

Если да, есть ли функция JavaScript или онлайн-утилита, с помощью которой я могу сделать свой букмарклет действительным URL-адресом за один шаг? В JavaScript есть encodeURI, но он также будет кодировать круглые скобки, фигурные скобки и т. д.


person Bungle    schedule 03.03.2010    source источник


Ответы (2)


Ответ на ваш вопрос — да (однако некоторые браузеры, такие как Firefox, автоматически экранируют такие вещи, как пробелы). " rel="nofollow noreferrer">Сценарий Perl Javascript Bookmarklet Джона Грубера (да, парень с Markdown!)

person aviraldg    schedule 03.03.2010

Я сделал несколько букмарклетов и не помню, как их кодировать. Так что я думаю, что это не обязательно (но может быть необходимо для определенных браузеров, таких как IE)

person Ionuț Staicu    schedule 03.03.2010
comment
Спасибо, Ионут. Я также заметил, что некодированные букмарклеты работают (по крайней мере, в браузерах, которые я проверял, таких как FF/3.6 и Saf/4), но, зная, как браузеры оптимизируют плохой код, я решил, что все же стоит следовать правила, если можно. - person Bungle; 03.03.2010