Javascript-форум (https://javascript.ru/forum/)
-   Я не знаю javascript (https://javascript.ru/forum/ya-ne-znayu-javascript/)
-   -   Свернуто ли окно браузера? (https://javascript.ru/forum/ya-ne-znayu-javascript/3932-svernuto-li-okno-brauzera.html)

Leax 07.06.2009 13:33

Свернуто ли окно браузера?
 
FF + GreaseMonkey

Перекопал инет, просмотрел книги- не нашел ((
(может не там искал?)

Как определить состояние браузера (окна браузера)- свернут/развернут/в фокусе?

Leax 07.06.2009 14:10

Объясню для чего:
Контролируется появление в коде страницы определенной фразы.
Если фраза появилась и окно развернуто, то ничего не делаем (и так видно).
Если же оно свернуто - используем alert с сообщением, и в панели задач замигает заголовок окна браузера.

Gvozd 07.06.2009 14:12

Насколько я знаю никак
максимум, можно определить активность-неактивность окна
используйте события окна window.onfocus и window.onblur
но неактивное окно необязательно будет свернуто

Leax 07.06.2009 16:07

Вставил нижеследующий код в js файл, подключил скрипт через GreaseMonkey в FF:

Window.onblur=lostfocus;

Function lostfocus() {
alert(' Фокус потерян!')
Return true;}

И ничего не происходит.
Что-то не так сделал?

Gvozd 07.06.2009 16:15

JS регистрозависимый язык

Riim 07.06.2009 16:19

Цитата:

Сообщение от Gvozd
Насколько я знаю никак

Положение же окна вроде можно как-то вычислить. И если оно свернуто, то возможно там будет x:-1,y:-1 . Или нет?

Leax 07.06.2009 22:49

Цитата:

Сообщение от Gvozd
JS регистрозависимый язык

Все переписал в нижнем регистре- разницы никакой. Никакого эффекта при сворачивании и разворачивании окна, переходе к другим программам.
Окно alert не появляется...

Octane 07.06.2009 23:07

Должно работать. Исправленный код покажите, что бес толку гадать?

Leax 07.06.2009 23:47

Цитата:

Сообщение от Octane (Сообщение 21156)
Должно работать. Исправленный код покажите, что бес толку гадать?

Я уже по-разному пробовал:
и так
window.onblur = function() { // Zeleax
alert( 'im blurred' );
}

и так
window.onblur=lostfocus; //Zeleax
function lostfocus() { // Zeleax
alert( 'im blurred' );
return true;
}

оба этих куска кода внутри кода большого js файла

Leax 07.06.2009 23:52

попробовал вынести в отдельный js файл и подключить - бестолку

Gvozd 07.06.2009 23:54

хм
я тут глянул
а собственно под мозиллой-то и непашут эти метода, кажется
window.onfocus=function(){
alert('focus');
}
window.onblur=function(){
alert('blur');
}

в опере получаем бесконечный цикл(при алерте фокус теряется)
в осле только парные варианты соответсенно(фокус при алерте не теряется)
PS не успел
PPS гуглите о совметсимости этих обработчиков и огнелиса. я не сильно вижу инфу по этому поводу

Octane 07.06.2009 23:55

Странно, вроде ошибок нет, у меня работает:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript">
window.onfocus = function() {
	document.title += " focus ";
};
window.onblur = function() {
	document.title += " blur ";
};
</script>
</head>
<body>
</body>
</html>

Gvozd 08.06.2009 00:01

Octane,
какой огнелис проверял?
я проверял 2.0.0.20 и у меня твой пример не запахал, как и мой

Octane 08.06.2009 00:18

Проверил, работает в следующих браузерах в Windows XP:
  • Mozilla Firefox 2.0.0.20
  • Mozilla Firefox 3.0.10
  • Mozilla Firefox 3.5b4
  • Internet Explorer 6
  • Internet Explorer 8
  • Opera 9.27
  • Opera 9.64
  • Opera 10b
  • Safari 3.2
  • Safari 4b
  • Google Chrome 3
Только в Opera и Safari при загрузке окно фокус не получает автоматически.

Gvozd 08.06.2009 00:31

странно очень
сперва не работало, а теперь заработало
магия, блин

Leax 08.06.2009 11:27

Я этот код использовал в js файле, а не в html

Gvozd 08.06.2009 11:44

а какая разница?
только в том, что JS-файл может не подключится
проверьте этот факт

Leax 08.06.2009 12:38

Цитата:

Сообщение от Gvozd
а какая разница?
только в том, что JS-файл может не подключится
проверьте этот факт

Немного стыдно спросить... А как проверить (на будущее)? )
Сейчас большой js файл с этим куском кода точно работает, так как он создает свою информационную таблицу, которой раньше на странице не было (до его подключения). А вот тот кусок кода, о котором говорили никакой реакции не дает... Может это быть как-нибудь связано с тем, что в другой части кода тоже вызываются окна alert, но при других условиях?
Как еще кроме использования окна alert проверить, что управление попало внутрь функции по обработке события?

x-yuri 08.06.2009 13:24

Цитата:

А как проверить (на будущее)? )
на вкладке net firebug'а; вставить alert в скрипт; увидеть результаты работы скрипта

Цитата:

А вот тот кусок кода, о котором говорили никакой реакции не дает...
в консоли ошибок что-то появляется?

Цитата:

Как еще кроме использования окна alert проверить, что управление попало внутрь функции по обработке события?
console.log(...); // firebug
document.title += ...;
document.body.appendChild( document.createTextNode(...) );

Leax 08.06.2009 14:04

в коде
function lostfocus() { // Zeleax
alert( 'im blurred' );
return true;
}

window.onblur=lostfocus; //Zeleax

дает ошибку
Ошибка: Component is not available
Источник: file:///C:/Documents%20and%20Settings/Alex/Application%20Data/Mozilla/Firefox/Profiles/y8shrqad.default/gm_scripts/hwm_test/hwm_test.user.js
Строка: 28

Это строка с
window.onblur=lostfocus; //Zeleax

Leax 08.06.2009 14:44

А вот другой вариант:

window.onblur= function() { // здесь Ошибка: Component is not available
alert( 'im blurred' );
return true;
}

Leax 08.06.2009 14:48

А вот еще вариант:
window.onblur = function() { // здесь Ошибка: Component is not available
document.title += " blur ";
};

Gvozd 08.06.2009 15:05

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

Leax 08.06.2009 15:50

Цитата:

Сообщение от Gvozd (Сообщение 21221)
не уверен, но может быть из GreaseMonkey надо как-то по особенному добиратся до окна, или ее что?
полагаю это именно он шалит

А как можно помимо GreaseMonkey подключить js к чужой странице в FF?

Gvozd 08.06.2009 16:04

JABFrame


Часовой пояс GMT +3, время: 16:45.