Как очистить фокус в javascript?


Я знаю, что это не должно быть сложно, но я не мог найти ответ на Google.

Я хочу выполнить фрагмент javascript, который очистит фокус от любого элемента, на котором он находится, не зная заранее, на каком элементе находится фокус. Он должен работать на Firefox 2, а также более современные браузеры.

есть хороший способ сделать это?

6 111

6 ответов:

.focus() а то .blur() что-то еще произвольное на Вашей странице. Поскольку только один элемент может иметь фокус, он переносится на этот элемент, а затем удаляется.

ответ: document.activeElement

---редактировать----

технически: document.activeElement.blur()

----редактировать 2----

function onElementFocused(e)
{
    if (e && e.target)
        document.activeElement = e.target == document ? null : e.target;
} 

if (document.addEventListener) 
    document.addEventListener("focus", onElementFocused, true);
document.activeElement.blur();

работает неправильно на IE9 - он стирает все окно браузера, если активным элементом является тело документа. Лучше проверить на этот случай:

if (document.activeElement != document.body) document.activeElement.blur();

dummyElem.Фокус() где dummyElem является скрытым объектом (например, имеет отрицательный zIndex)?

вы можете вызвать окно.фокус();

но перемещение или потеря фокуса обязательно помешает любому, кто использует клавишу tab, чтобы обойти страницу.

вы можете прослушать код ключа 13, и отказаться от эффекта, если клавиша tab нажата.

С jQuery его просто: $(this).blur();