Pull to refresh

Comments 10

Это связано с тем фактом, что если после схемы javascript: указано выражение — его результат будет использован вместо html-кода.

К примеру, если написать в адресной строке javascript:'<div>text</div>' — результат будет точно таким же. Встречая код вида javascript:document.body.textContent = '<div>text</div>', браузер (Mozilla Firefox — точно, остальные — не знаю) делает две операции:

1. Присваивание document.body.textContent = 'div>text</div>'
2. Замена кода документа на результат вычисленного выражения — '<div>text</div>'

Кстати, шаг 2 является операцией перехода и отражается в истории (можно вернуться назад) — а первый шаг меняет текущую страницу.

При удаче можно даже увидеть, как одна надпись сменяет другую.

Причем такое «чудо» происходит при любой последовательности операторов, если последний из них является выражением. Чтобы защититься от такой «фичи», можно дописать в конец букмарклета ;void(0) — в таком случае второго шага не происходит.
Да, верно. Ложная тревога. Спасибо за объяснение.
Надо бы статью переписать, а может и удалить, за неимением стержня.
Ну или оставить ради генератора пароля.
Жёлтенько получилось.
Удалять не стоит. Думаю можно просто дополнить статью первым комментарием. Тогда получится довольно познавательно.
Не стоит удалять, она в будущем может кому-нибудь очень пригодиться. А первый комментарий действительно стоит добавить в статью.
Добавил. Спасибо хабр-сообществу за столь тёплый приём.
А не подскажите, где можно почитать о том, почему происходит шаг 2?
Если бы еще я сам это знал…
Я тут нагуглил, кажется, некоторое задокументированное поведение. Не судите строго: JavaScript URIs.
Ну это же обычное поведение браузера.
При переходе по ссылке или вбивании чего-нибудь в адресную строку браузер просто берет контент по указанному протоколу (обычно это http(s)://, в данном случае — javascript:) и показывает в окне документа, заменяя его текущее содержимое. Разница лишь в том, как именно получается конечный контент.
Появилась идея для продолжения.
Кому интересно?
Sign up to leave a comment.

Articles