Как зайти в Даркнет?!
25th January, 01:11
8
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
900
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
952
0
Очень долго работает Update запрос Oracle
27th January, 09:58
916
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
907
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
942
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1727
0
период по дням
25th October, 10:44
3957
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3722
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4614
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4382
0
Помогите пожалуйста решить задачи
24th November, 23:53
6088
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4352
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4400
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Какова цель (если таковая имеется) "javascript:" в тегах обработчика событий?
В последнее время я прилагаю согласованные усилия, чтобы улучшить свои навыки javascript, читая как можно больше кода javascript. При этом я иногда видел префикс javascript: , добавляемый к передней части атрибутов обработчика событий в тегах элементов HTML. Какова цель этой приставки? В принципе, есть ли заметная разница между:
onchange="javascript: myFunction(this)"
и
onchange="myFunction(this)"
?
Вероятно, в вашем примере ничего нет. Я понимаю, что javascript: - это для якорных тегов (вместо фактического href). Вы бы использовали его, чтобы ваш скрипт мог выполняться, когда пользователь нажимает ссылку, но без инициализации перехода обратно на страницу (что будет делать пустой href в сочетании с onclick ).
Например:
<a href="javascript:someFunction();">Blah</a>
Вместо того чтобы:
<a href="" onclick="someFunction();">Blah</a>
Он не должен использоваться в обработчиках событий (хотя большинство браузеров работают защищенно и не накажут вас). Я также утверждаю, что он не должен использоваться в атрибуте href якоря. Если браузер поддерживает javascript, он будет использовать правильно определенный обработчик событий. Если браузер этого не делает, ссылка javascript: будет выглядеть сломанной. IMO, лучше указать им на страницу, объясняющую, что они должны разрешить javascript использовать эту функциональность, или еще лучше-не javascript обязательную версию функциональности. Итак, что-то вроде:
<a href="non-ajax.html" onclick="niftyAjax(); return false;">Ajax me</a>
Edit: придумал хорошую причину для использования javascript:. Букмарклеты. Например, он отправляет вас в google reader, чтобы просмотреть каналы rss для страницы:
var b=document.body;
if(b&&!document.xmlVersion){
void(z=document.createElement('script'));
void(z.src='http://www.google.com/reader/ui/subscribe-bookmarklet.js');
void(b.appendChild(z));
}else{
location='http://www.google.com/reader/view/feed/'+encodeURIComponent(location.href)
}
Чтобы пользователь мог легко добавить этот букмарклет, вы должны отформатировать его следующим образом:
<a href="javascript:var%20b=document.body;if(b&&!document.xmlVersion){void(z=document.createElement('script'));void(z.src='http://www.google.com/reader/ui/subscribe-bookmarklet.js');void(b.appendChild(z));}else{location='http://www.google.com/reader/view/feed/'+encodeURIComponent(location.href)}">Drag this to your bookmarks, or right click and bookmark it!</a>
Он должен использоваться только в теге href.
Он должен использоваться только в теге href.
Это просто смешно.
Общепринятый способ таков:
<a href="/non-js-version/" onclick="someFunction(); return false">Blah</a>
Но чтобы ответить на OP, как правило, больше нет причин использовать javascript: . На самом деле, вы должны прикрепить событие javascript из вашего скрипта, а не встроенное в markup. Но, это пуристская вещь, я думаю : - D
Происхождение javascript: в обработчике событий на самом деле является просто IE конкретной вещью, так что вы можете указать язык в дополнение к обработчику. Это связано с тем, что vbscript также является поддерживаемым клиентским языком сценариев в IE. Вот пример "vbscript:" .
В других браузерах (как уже было сказано Shadow2531) javascript: -это просто метка и в основном игнорируется.
href="javascript:..." можно использовать в ссылках для выполнения кода javascript, как указывает DannySmurf.
Я не являюсь авторитетом в JavaScript и, возможно, более тупым, чем Аскер, но AFAIK, разница в том, что префикс javascript: предпочтителен/необходим в URI-контекстах, где аргумент может быть также традиционным HTTP URL, как и триггер JavaScript.
Таким образом, мой интуитивный ответ будет заключаться в том, что, поскольку onChange ожидает JavaScript, префикс javascript: является избыточным (если не прямо ошибочным). Однако вы можете написать javascript:myFunction(this) в адресной строке, и эта функция будет запущена. Без javascript: Ваш браузер будет пытаться интерпретировать myFunction(this) как URL и попытается получить информацию о DNS, перейти к этому серверу и т. д...
javascript: в коде JS (как и в атрибуте onclick) это просто метка для использования с инструкциями continue/goto label, которые могут поддерживаться или не поддерживаться браузером (вероятно, нигде). Это может быть зипзамбам: вместо этого. Даже если метка не может быть использована, браузеры все равно принимают ее, поэтому она не вызывает ошибки.
Это означает, что если кто-то бросает бесполезную метку в атрибут onclick, он, вероятно, не знает, что делает, и просто копирует и вставляет или делает это по привычке из-за того, что делает ниже.
javascript: в атрибуте href означает Javascript URI.
Пример :
javascript:(function()%7Balert(%22test%22)%3B%7D)()%3B
Это просто смешно.
Нет, это не смешно, javascript: это псевдо-протокол, который действительно может использоваться только в качестве предмета ссылки, так что он совершенно прав. Ваше предложение действительно лучше, но лучше всего использовать ненавязчивые методы javascript для перебора элементов HTML и добавления поведения программно, как это используется в библиотеках типа jQuery.
В принципе, есть ли какая-то заметная разница между: onchange="javascript: myFunction(this)" и onchange="myFunction(this)" ?
В принципе, есть ли какая-то заметная разница между:
onchange="javascript: myFunction(this)"иonchange="myFunction(this)"?
Предполагая, что вы имели в виду href="javascript: myFunction(this)" , да, есть, особенно при загрузке контента с помощью javascript. Использование протокола javascript: pseudo делает контент недоступным для некоторых людей и всех поисковых систем, в то время как использование реального href и последующее изменение поведения ссылки с помощью javascript делает контент доступным, если javascript выключен или недоступен в конкретном клиенте.