2013-06-06 4 views
2

Рассмотрим простую HTML поле вводаПредотвращение ONBLUR occurency событие при открытии новой вкладки в браузере

<input type="text" onblur='alert("hello");' /> 

, когда мышь находится в этом поле ввода, и вы пытаетесь открыть новую вкладку в браузере (Chrome, IE, ...), Событие onblur запускается. Я не хочу запускать событие onblur таким образом. Как я могу избежать этого?

+0

Можете ли вы использовать 'onfocusout()' ??? – NINCOMPOOP

+0

Событие onfocusout не поддерживается полностью браузерами (насколько я знаю). – Paramore

+0

, чтобы потерять фокус, вам придется щелкнуть снаружи на что-то еще, это не отличное решение, но вы можете поставить слушателя на тело для любого нажатия –

ответ

2

Вы можете использовать document.activeElement, чтобы проверить, действительно ли элемент потерял фокус в DOM. (Browser compatibility достаточно широк, а также.)

Ваш код может выглядеть следующим образом:

HTML

<input type="text" onblur='blurred(this);' /> 

JS

function blurred(elem) { 
    if (elem != document.activeElement) { 
     alert("Bye !"); 
    } 
} 

См, также, это short demo ,

+0

Большое спасибо ExpertSystem, он отлично работает! – Paramore