2010-10-28 2 views

ответ

0

Да, вы можете запускать заявления в поле url.

так:

javascript:if(2>1){alert('2 > 1');} 
3

void не является функцией, это оператор. Это означает, что вы можете использовать его с круглыми скобками или без них. Все, что он делает, это выражение, следующее за ним, возвращает undefined. В случае навигации возвращение undefined предотвращает выход из выражения из-за того, что вы удаляете навигацию от страницы.

Вы можете запустить любой код JavaScript через адресную строку некоторых браузеров, независимо от того, используете ли вы оператор void или нет. void просто делает это безопасным, не перемещаясь. Популярная альтернатива void это обернуть свой код в себя выполнение анонимной функции:

javascript:(function() { alert("hello"); })(); 

Часто фрагменты кода, как это будут сохранены в качестве закладки, так что они могут работать по нажатию на ссылку в закладки или панель избранного на любой странице. Эти фрагменты называются Bookmarklets.

Протокол javascript: был отключен для ввода URL-адреса в некоторых новых браузерах, в первую очередь Firefox (since 6.0). Это прежде всего для предотвращения того, что пользователи становятся объектами самосинхронных атак, когда они убеждены потенциальным злоумышленником вставить URL-адрес javascript: в адресную строку. В Google Chrome и последних версиях Internet Explorer часть javascript: удаляется из вставленного кода. Однако эти фрагменты по-прежнему работают как букмарклеты во всех вышеперечисленных браузерах.

Вы можете узнать больше о void в другом ответе, который я дал некоторое время назад: Help me understand javascript:void(null).

+0

Он не будет работать с адресной строкой (протестирован в IE 11 и Firefox 27.0.1). Вы должны сохранить его в качестве закладки, чтобы он работал. – Nolonar

+0

@Nolonar: Мне не удалось подтвердить ваш комментарий для IE 11, так как я сейчас уезжаю и у меня только Linux на моем ноутбуке. Я потратил около 10 минут на поиск в Интернете и могу найти ссылки, которые указывают на то же поведение, что и Chrome (где протокол javascript: 'разделяется при вставке). Однако я смог проверить это в Firefox. Я обновил ответ своими выводами. –

Смежные вопросы