Возможно ли прошить окно браузера с помощью Javascript? - PullRequest
4 голосов
/ 28 января 2009

Как и многие другие программы flash , их окно на панели задач / панели задач предупреждает пользователя о необходимости переключения на программу

Можно ли прошить окно Браузер с помощью Javascript? (также приветствуются скрипты только для FireFox)

Это полезно для сетевого чата / форума / программного обеспечения для сообществ, где существует множество действий в режиме реального времени .

Ответы [ 5 ]

4 голосов
/ 23 апреля 2009

@ Теория шестиугольника. Зачем вам когда-нибудь переписывать весь элемент головы, чтобы изменить значение одного элемента в голове? Ваше решение ужасно неэффективно на нескольких уровнях.

<html>
<head>
<link rel="icon" href="on.png" type="image/png" id="changeMe" />
<script type="text/javascript" src="flash.js"></script>
</head>
<body>
</body>
</html>

flash.js:

function Flasher(speed) {
  var elem = document.getElementById('changeMe');

  this.timer = setTimeout(function() {
    elem.href = elem.href ==  'on.png' ? 'off.png' : 'on.png';
  }, speed);

  this.stop = function() { clearTimeout(this.timer); }
}

/* sample usage
 *
 * var flasher = new Flasher(1000);
 * flasher.stop();
 */

Это не обязательно был класс, но он помогал поддерживать чистоту глобального пространства имен. Это не проверено, но если по какой-то причине простое изменение href не работает, клонируйте узел ссылки, измените href и замените старую ссылку на клонированную.

3 голосов
/ 28 января 2009

В данный момент кажется, что только всплывающее диалоговое окно с предупреждением делает свое дело ... это кажется слишком навязчивым, я чувствую, особенно учитывая использование, которое вы пытаетесь применить. Вместо того, чтобы заставить его мигать, вы можете изменить document.title, чтобы привлечь внимание пользователя, либо добавив какой-либо сигнал (возможно, строку «NEW!») К имени сайта, а затем используя интервал, чтобы постоянно менять его на "", что тогда дало бы милую маленькую "мигающую" иллюзию.

Пример с обнаженными костями:

<html>
<head>
<title>Chat System</title>
<script>
var timer, old_t = document.title, blink_amount = 5, cur_b = 0;
function notify()
 {
cur_b = 0;
timer = setInterval(function()
 {
if (cur_b < blink_amount * 2)
 {
cur_b++;
document.title = (document.title.indexOf('NEW! ') != -1) ? old_t : 'NEW! ' + old_t;
 }
else
 {
clearInterval(timer);
 }
 }, 600);
 }

notify();

// From here, it's just a matter of calling the
// notify() function whenever you detect a new message.
</script>
</head>
<body>
</body>
</html>
1 голос
/ 06 августа 2009

Я только что обнаружил window.getAttention () для Firefox, но он работает только тогда, когда аддон вызывает его.

  • Windows , кнопка панели задач для окна мигает
  • Linux , некоторые оконные менеджеры мигают кнопкой на панели задач, другие сразу фокусируют окно
  • Macintosh , значок в правом верхнем углу рабочего стола мигает
1 голос
/ 08 февраля 2009

Эй, еще одно интересное решение этого вопроса поразило меня только сейчас. Почему бы на самом деле не привлечь внимание пользователя, заставив значок мигать в его браузере? Например, вы можете сделать две иконки ( on.png и off.png в моем примере ниже) и несколько раз поменять их местами, чтобы действительно привлечь внимание пользователя. Следующее является простой реализацией; Имейте в виду, что вам нужно ссылаться на этот скрипт удаленно или поместить его в тело страницы, потому что он использует метод, который постоянно заменяет содержимое тега <head> , Попробуйте, хотя; Мне скорее нравится простота этого.

page.html:

<html>
<head>
<link rel="icon" href="on.png" type="image/png" />
<script type="text/javascript" src="flash.js"></script>
</head>
<body>
</body>
</html>

flash.js:

var timer, speed = 175;
function flash()
 {
head_html = document.getElementsByTagName('head')[0].innerHTML;
if (head_html.indexOf('href="on.png"') != -1)
document.getElementsByTagName('head')[0].innerHTML = head_html.replace('on.png', 'off.png');
else
document.getElementsByTagName('head')[0].innerHTML = head_html.replace('off.png', 'on.png');
timer = setTimeout('flash()', speed);
 }

function kill_flash() {clearTimeout(timer);}

flash();
0 голосов
/ 28 января 2009

Window.Focus () должен делать это в Windows, хотя не уверен на других платформах. Возможно, вы обнаружите, что оно выводит окно на передний план, если оно свернуто, но это очень раздражает:)

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