2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 На что заменить .focus() в firefox?
Сообщение24.08.2016, 02:30 
Аватара пользователя
Пишу страницу для сайта, есть такая проблема:
Изначально есть такой элемент прямо внутри <body>:
Используется синтаксис HTML
<input id="mainblock" type="text" maxlength="0" onkeyup="raspredfun(event)" onblur="antifocusfun()" autofocus>

Смысл в том что когда я захожу на страницу mainblock оказывается под фокусом, а потом если пытаться убрать фокус с элемента срабатывает это:
Используется синтаксис Javascript
function antifocusfun(){
document.getElementById('mainblock').focus();
};

И фокус возвращается на место.
В гугл хроме всё прекрасно... А в firefox не работает!!!
Я уже пробовал так:
Используется синтаксис Javascript
function antifocusfun(){
document.getElementById('mainblock').selected = true;
};

И всё равно ничего хорошего!
Помогите исправить!

 
 
 
 Re: На что заменить .focus() в firefox?
Сообщение24.08.2016, 13:57 
Аватара пользователя
Позвольте мне прогуглить это за вас: http://lmgtfy.com/?q=getelementbyid+focus+firefox

P.S. Не знаю, что вы там пишете, но ни один метод в моём браузере не раздражает меня так же сильно, как onblur, если бы была возможность его отключить, я бы так и сделал.

 
 
 
 Re: На что заменить .focus() в firefox?
Сообщение25.08.2016, 01:22 
Работоспособность вашего кода зависит от способа обработки переноса фокуса. Вы устанавливаете фокус в то же время в которое браузер его переносит с элемента на элемент. Если процесс обработки в браузере такой
Код:
do_blur();
call_onblur_handler(); // здесь вы пытаетесь установить фокус
set_focus_on_new_control();
то у вас ничего не выйдет.
Чтобы поправить ситуацию оберните установку фокуса в setTimeout. Задержку можно установить в ноль. В этом случае ваш код выполнится сразу после того как браузер завершить все свои дела по переносу фокуса. Тут-то вы его и поправите.

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group