Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Изпълнение на Js-функция, само когато прозорецът е на фокус

Featured Replies

Здравейте!

Използвам следната функция, която отброява време:

<script language="JavaScript">

<!--

var countDownTime = 5;

var z="";

function countDown() {

--countDownTime;

if (countDownTime == 0) {

countDownTime = 5;

//стартира друга функция, чийто резултат ми трябва

showHint(z);

setTimeout("countDown()", 1000);

} else {

setTimeout("countDown()", 1000);

}

}

// -->

</script>

<script language="JavaScript">

<!--

setTimeout("countDown()", 1000);

// -->

</script>

Необходимо ми е отброяването да не се изпълнява, когато потребителят разглежда съдържанието на друг прозорец.

Когато прозорецът отново е на фокус, функцията да се задейства отново, подавайки еднократно като стойност на countDownTime = 1 (за да може веднага да извика showHint(z); -посочена е със забележка в скрипта), след което броенето да си продължи стандартно.

Благодаря предварително!

  • Автор

Kimvaras,

благодаря, че обърна внимание на темата!

Усещам, че е правилно като решение, защото с <body onFocus="нещо си" onBlur="друго нещо"> както пробвах аз проверката е на твърде ниско ниво (нужен е обекта от най-висок порядък - window както показваш), но ми се струва, че в това което предлагаш нещо липсва.

Пробвах го като код, не ми вади алерти, пробвах и да изпише някаква стойност, не изписва.

Как да го извикам, защото явно не го правя?

Инетерсува ме една проверка, нещо от типа:

if(a==b){

showHint(z);

}

Би ли ми обяснил на база този пример, а аз ще си го нагодя към нуждите?

Редактирано от sizif (преглед на промените)

Ети един пример как реагира:

<html>

<head>

<script>

var bFocus = false;

window.onfocus = function()

{

  if(bFocus) return;

  bFocus = true;


  // user code

  document.getElementById('ta').value += 'Focus\n';

}

window.onblur = function()

{

  if(!bFocus) return;

  bFocus = false;


  // user code

  document.getElementById('ta').value += 'Blur\n';

}


</script>

</head>

<body>

  <textarea id='ta' rows='20' cols='100'></textarea>

</body>

</html>

Firefox малко се увлича и вика onFocus и onBlur по 2 пъти затова има флага bFocus, за да избегне повторното извикване.

  • Автор

Здравей!

Подкарах кода (ценен е и ще го използвам в други случаи), но се сблъсках със същата ситуация, както с проверката в боди-тага.

При ИЕ, ако се активира който и да е елемент (напр. текстареа, див, спан-таг) прозорецът излиза от фокус, независимо, че е активен.

При ФФ проблемът е обратен - ако е активирана текстареа или текстово поле прозорецът остава активен, нищо че е минимизиран.

Ако даваха близки реакции, можеше да държа текстареата (основен елемент в проекта) непрекъснато на фокус и да проверявам по нея, но при ФФ това обърква нещата.

При моето ниво в Js проблемът изглежда нерешим. За да не харча излишно процесорно време, ще трябва да търся компенсиращ механизъм на сървъра sad.gif

Сещаш ли се за някакъв друг тип проверка?

Регистрирайте се или влезете в профила си за да коментирате

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.