Событие window.onfocus не запускается в Google Chrome? - PullRequest
2 голосов
/ 01 июля 2010

У меня есть ситуация, когда я хочу подтвердить, что пользователю все еще разрешено редактировать страницу, когда страница получает фокус.Это не позволит им отказаться от редактирования на одной вкладке, а затем вернуться к редактированию на исходной вкладке или отказаться от редактирования, а затем с помощью кнопки НАЗАД браузера вернуться на страницу, на которой они все еще могли редактировать.Для этого отлично работает window.onfocus в IE, FF и Safari, но не в Chrome.Это правильно?Я что-то упускаю из виду?Есть ли обходной путь?Вот код, который работает в IE, FF и Safari:

$(window).bind('focus', function() {
   $.getJSON("do_check.php", {id: 'foo'}, function(data){
      if (! data.SUCCESS) {
         $("#not_editor_dialog").dialog('open');
      }
   });
});

Обратите внимание, что вышеприведенное связывает событие с jQuery, но версия без jQuery также не работает в Chrome:

window.onfocus = function() { 
   etc.
};

Спасибо!

Ответы [ 2 ]

0 голосов
/ 25 июня 2011

Ничто из вышеперечисленного не работает. Они просто стреляют слишком много раз.

Я полагаю, что это также путь:

var focused = false;

$(window).bind('focus', function() {                
    if (!focused ) {

        // *
        // * Do stuff on focus here
        // *

        focused = true;
    }
});

$(window).bind('blur', function() {
    if ( focused ) {
        focused = false;    
    }
} );

Должно быть в состоянии обойтись и без jQuery!

0 голосов
/ 01 июля 2010

Работает для меня в Chrome.

Пример: http://jsfiddle.net/KuZSu/ (нажмите на нижнюю правую панель, чтобы сфокусироваться)

$(window).bind('focus', function() {
   $('body').append('focused<br>');
});​

Если getJSON() запрос не работает для вас, это может быть связано с тем, что в Chrome есть проблемы с безопасностью при выполнении запроса AJAX при размещении страницы из файловой системы.

См. Этот вопрос: Проблемы с jQuery getJSONиспользование локальных файлов в Chrome

Решение, предлагаемое в комментарии к этой странице, исходит от Nick Craver : "Попробуйте запустить Chrome через командную строку, используя --disable-web-обеспечение безопасности и посмотреть, работает ли оно? "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...