Активировать / деактивировать события при перемещении окна - PullRequest
4 голосов
/ 15 января 2012

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

  window.addEventListener("deactivate", function(event) { alert("deactivate"); }, false);
  window.addEventListener("activate", function(event) { alert("activate");  }, false);

В основном все работает отлично. Когда я переключаюсь между разными окнами или минимизирую / разворачиваю Firefox, события происходят так, как я и ожидал. Однако оба события также запускаются, когда я перемещаю окно, даже если оно уже активно. Когда я начинаю двигать окно, происходит событие «деактивировать»; когда я прекращаю движение и отпускаю кнопку мыши, происходит событие «активировать». Я понятия не имею, как я могу обнаружить и игнорировать это поведение. Интуитивно понятно, что окно все время активно.

Я пытался проверить, прежде чем обрабатывать событие «деактивировать», нажата ли кнопка мыши. Однако добавление прослушивателя события «click» в окно, похоже, не включает строку заголовка окна. Кто-нибудь знает, как я могу различить «действительно» деактивирование окна и его перемещение? Большое спасибо заранее!

1 Ответ

0 голосов
/ 06 марта 2012

Вы можете использовать этот ответ , чтобы определить позицию браузера на экране.Если вы делаете это в начале, вы можете сравнить, если они меняются.

Что-то вроде того, когда страница загружается:

var x,
    y,
    win = window;

if(win.screenTop !== undefined) {
    x = win.screenleft;
    y = win.screenTop;
} else {
    x = win.screenX;
    y = win.screenY
}

и сравнить эти значения с текущими значениями, когда ваши события запускаются.

(обратите внимание, что это работает только при изменении положения окна)

...