События OnFocus / OnBlur не зарегистрированы

#javascript #html #dom-events #onfocus

#javascript #HTML #dom-события #onfocus

Вопрос:

Я чувствую себя действительно глупо, спрашивая об этом, но, что примечательно, я бьюсь головой уже час. Вот код:

 <div id="img1" onfocus="alert('test');" onblur="alert('test');">
 <img id="image1" name="image1" src="image1.jpg"  alt="Pciture 1">amp;nbsp;
</div>
  

Оба события ( Focus / Blur ) должны вызывать функцию, но даже этот простой тест ( alert ) не работает. Оба этих тега находятся в разделе body, пробовал изменить DOCTYPE определение — никакого эффекта.

W3 выдает ошибку:

нет атрибута «ONFOCUS»

Моя главная цель — использовать события непосредственно в img тегах, но по какой-то причине это тоже не работает.

Ответ №1:

по умолчанию div не является интерактивным элементом, поэтому он вообще не получает фокуса, попробуйте добавить к div tabindex атрибут, такой tabindex="1" как, тогда он будет фокусируемым

Комментарии:

1. Спасибо, все работает нормально, но я должен щелкнуть по элементу, чтобы заставить его работать, это не совсем то, что я хотел.

2. Затем вы можете искать mouseover и mouseout , или focusin и focusout в IE

Ответ №2:

<div> и <img> обычно не имеют события фокусировки или размытия, но вы можете попробовать установить для него tabindex в качестве обходного пути. Хотя это немного странно.

http://www.quirksmode.org/dom/events/blurfocus.html

Ответ №3:

Событие onfocus возникает, когда элемент получает фокус либо с помощью указывающего устройства, либо с помощью навигации по вкладкам. Этот атрибут может использоваться со следующими элементами: A, AREA, LABEL, INPUT, SELECT, TEXTAREA и BUTTON.

Источник: спецификация w3c HTML4

Ни div , ни an img не могут получать или терять фокус, это не интерактивные элементы. Вы можете включить их фокусировку с помощью настройки tabindex .

существуют узлы, которые не могут фокусироваться по умолчанию, такие как div, span, table и т.д., Но могут получать фокус, если применяется tabindex

Источник: http://nemisj.com/focusable

Ответ №4:

Средство проверки W3C работает правильно, тег div не имеет атрибутов onfocus или onblur в качестве атрибутов. Смотрите здесь: http://www.w3schools.com/tags/tag_DIV.asp

Комментарии:

1. Спасибо, кажется, я забыл о спецификациях

2. Человеку, который отклонил это, не могли бы вы, пожалуйста, сказать мне, почему? Насколько мне известно, мой комментарий верен и применим к этому вопросу.

Ответ №5:

Возможно, события onmouseover и onmouseout — это то, что вы ищете

Ответ №6:

Вам не следует использовать встроенный JS для ваших обработчиков событий. Вместо этого используйте ненавязчивый javascript.

Ответ №7:

В теге Div нет событий onfocus и onblur. Пожалуйста, попробуйте наведение курсора мыши и т.д..

Ответ №8:

Вы можете перестать биться головой, во-первых, это больно, во-вторых, вы не можете использовать onfocus или onblur для элементов div.

Проверьте ссылку da: W3C

Чего вы пытаетесь достичь?