2012-04-20 2 views
8

Есть ли разница междуOnClick = "JavaScript: FUNC()" против OnClick = "Func()"

<input type="submit" value="Register" onclick="javascript:submitTheForm();"> 

и

<input type="submit" value="Register" onclick="submitTheForm();"> 

Должен ли я использовать javascript: перед вызовом функции JS ?

+4

Нет, вам не нужно .. –

+0

на ***** запускает javascript без определения их «javascript:» – Tobi

+0

в любом случае, это не очень хорошая практика для использования inline – Joseph

ответ

10

javascript: внутри обработчик onwhatever="" не является оператором. Содержимое этого атрибута всегда равно JavaScript, поэтому javascript: определяет label - но вне блока или петли switch (где вы можете использовать его для break/continue на позицию метки), он ничего не делает.

Однако использование обработчиков событий inline не рекомендуется, для регистрации обработчиков событий есть betterways.


Хотя не упомянуто в вопросе, стоит отметить, что использование javascript: в атрибуте href делает работу (и там это действительно необходимо), но настоятельно рекомендуется по различным причинам:

  • this не указывает на элемент
  • Вызов функции, возвращающей значение, приводит к тому, что браузер покидает сайт
  • Кликнув по ссылке с отключенными разрывами JavaScript
  • Попытка открыть ссылку в новом окне/вкладке разбивает

Так что, если вы действительно должны использовать встроенные события, всегда используйте onclick="" и т.д. без javascript:.

+0

Вы можете использовать его также с 'break' и любым выражением. Он не должен использоваться вместе с 'switch'. –

+0

Правда; обновил мой ответ. – ThiefMaster

1

Если вы находитесь в атрибуте onclick, вы не должны использовать префикс javascript:. Это полезно, когда вы хотите ссылку <a /> обработать функцию JS, например:

<a href="javascript:myfunc();"></a> 
+2

'javascript:' URL-адреса плохие. Они не только ломаются с отключенным JavaScript, но также вызывают проблемы, если функция возвращает значение. Поэтому лучше использовать правильный URL-адрес в 'href' (или' # ', если ссылка не имеет резервной копии не-js) и' onclick' для запуска вашего javascript-кода ('return false;'/'preventDefault', чтобы избежать загрузки href ссылки) – ThiefMaster

+1

Я согласен с вами. Вопрос касался префикса 'javascript:'. – sp00m

1

javascript:func() использует javascript protocol таким образом, чтобы он мог быть использован в якорях href атрибута. Однако, не делайте этого, см. Why is it bad practice to use links with the javascript: “protocol”? для получения дополнительной информации.

Обработчики событий предпочтительнее запускать события вместо атрибутов.

+0

ОП спросил о 'onclick', а не о' href' – ThiefMaster

+0

В любом случае спасибо за смежный вопрос! –

+0

@ThiefMaster - правда, но он также спрашивал о скрипте, начинающемся с 'javascript:'. – detaylor

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