Как отобразить текст в строке состояния браузера?

Как мы можем изменить текст, отображаемый в строке состояния браузера, с помощью JavaScript (или jQuery)?


person omg    schedule 18.09.2009    source источник
comment
Не делай этого. В любом случае пользователь должен разрешить это.   -  person Josh Stodola    schedule 18.09.2009


Ответы (6)


jQuery для этого не нужен:

<script>
function writetostatus(input){
    window.status=input
    return true
}
</script>

Однако в большинстве новых браузеров нельзя установить текст в строке состояния из JavaScript.

person Chris Ballance    schedule 18.09.2009
comment
но не будет работать в Firefox по умолчанию — developer.mozilla.org/En/DOM/Window .статус - person Russ Cam; 18.09.2009
comment
Большинство новых браузеров запрещают вам устанавливать текст в строке состояния из JavaScript. - person Chris Ballance; 18.09.2009
comment
@Chris - готов поспорить, что следующий вопрос, вероятно, будет заключаться в том, как сделать что-то подобное в кросс-браузере :) - person Russ Cam; 18.09.2009
comment
@ Russ Cam, нет, я спрошу, почему ТАК отказался выделять всю область принятого ответа? - person omg; 19.09.2009

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

введите описание изображения здесь

Тем не менее, когда вы щелкаете по нему, вы переходите к местоположению и URL-адресу, зависящему от пользовательского агента, который выглядит как ="noreferrer" rel>="noreferrer" URL-адрес выполняет отслеживание Google и еще много чего, прежде чем перенаправить вас на https://www.example.com. Вы можете легко проверить это с помощью Network Inspector с "сохранить журнал".

Они используют хак-хак, но он работает во всех браузерах.

Хитрость заключается в том, чтобы понять, что мы можем установить строку состояния практически на что угодно, используя только a href HTLM (не требуется ни CSS, ни JavaScript). Все, что нам нужно, это обмануть синтаксический анализатор браузера, заставив его думать, что значение href является действительным URL-адресом, и он отобразит его.

Попробуйте запустить этот фрагмент:

<a href="http://.# this is p͕͓͔͕͓͔͕͓͔͕͓͔͕͓͔͕͓͔͕͓͔͕͓͔͕͓͔͕͓͔͕͓͔̐̑̓̐̑̓̐̑̓̐̑̓̐̑̓̐̑̓̐̑̓̐̑̓̐̑̓̐̑̓̐̑̓̐͜͜͜͜͜͜͜͜͜͜͜͜‌​̴̵̶͕͓͔͕͓͔͕͓͔͕͓͔̖͕͓̖̱̲̳̖̖̖̖̖̖̖͕̑̓̐̑̓̐̑̓̐̑̓̑̒̓̔̐̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̐̕̚͜͜͜͜͜‌​͓͔̖͕͓͔̖͕͓͔̖͕͓͔̖͕͓͔̖͕͓͔̖̑̓̑̒̓̔̐̑̓̑̒̓̔̐̑̓̑̒̓̔̐̑̓̑̒̓̔̐̑̓̑̒̓̔̐̑̓̑̒̓̔̕̚̕̚̕̚̕̚̕̚̕̚͜͜͜͜͜‌​͕͓͔̖͕͓͔̖̐̑̓̑̒̓̔̐̑̓̓̓̓̓̓̓̑̒̓̔̕̚̕̚͜͜owerful because ━Σ(゚Д゚|||)━ symbols !@)(*#&$^%</even htlm> or lorem ipsum in all scripts Лорем ипсум Lorem存有 ငါ့ရဲ့ဇာတ်မြင့် घरՏուն Дома ലോറെൻ  ഇപ്സം درமுகப்புЛорем ипсумలోלורם איפסוםరెం ఇప్సమ్ მთავარი હોમ לורם איפסוםלורם איפסום Forsíða Loremのイプサム ಮುಖಪುಟ ទំព័រដើម 가 lorem ipsum의 ຫນ້າທໍາອິດ Տուն আর্কাইভ">Hover this link (do not click) and observe the browser's status bar.</a>

Вывод Chrome (щелкните изображение, чтобы развернуть): (v46.0.2490.80 m)

введите описание изображения здесь

Вывод FireFox: (v42.0)

введите описание изображения здесь

Вывод IE: (v11.0.9600.17905 Обновление версии 11.0.21 (KB3065822))

введите описание изображения здесь

Вывод Opera: (v33.0.1990.58 стабильная)

введите описание изображения здесь

Вывод Seamonkey: (v2.38)

введите описание изображения здесь

Вывод Avant: (v Ultimate 2015, сборка 28)

  • Двигатель ИЭ 11:

    введите описание изображения здесь

  • IE-совместимый движок:

    введите описание изображения здесь

  • Хром двигатель:

    введите описание изображения здесь

  • Движок FireFox:

    введите описание изображения здесь

Выход факела: (v42.0.0.10546)

введите описание изображения здесь

Вывод Baidu: (v43.19.1000.119)

введите описание изображения здесь

Вывод Maxthon: (v4.4.8.1000)

введите описание изображения здесь


Также нет необходимости использовать # (идентификатор фрагмента). Браузеры также будут рассматривать такой текст, как http://some.message.here./and_more_message_here, как действительный URL-адрес. Более странные строки могут считаться допустимыми в зависимости от браузера:

  1. <a href="http://a.b.c.d/test_symbols_!#$%^&*()[]{};:'&quot;.><,//=+``~">

    (Chrome, FireFox, IE, SM, Torch, Baidu, Maxthon, Avant IE11, Avant IE Compat, Avant Chrome, Avant Firefox.)

    (Имена перечислены для браузеров с ожидаемым выводом, имена зачеркнуты ("example") для браузеров без вывода строки состояния, а имена подчеркнуты ("e̲x̲a̲m̲p̲l̲e̲") для браузеров с неожиданным выводом/поведением. Протестировано с версиями браузера, такими же, как перечисленные выше.)

  2. <a href="http://a.b.c.d/test some spaces">

    (Chrome, FireFox, I̲E̲, SM, Torch, B̲a̲i̲d̲u̲, M̲a̲x̲t̲h̲o̲n̲, A̲v̲a̲n̲t̲ I̲E̲ ̲1̲1̲, A̲v̲a̲n̲t̲ I̲E̲ ̲C̲o̲m̲p̲p, Chrome, Avant.)

  3. <a href="http://test some . spaces in domain part/a_b_c_d_e">

    (Chrome, Firefox , IE, SM , Факел, Baidu, Maxthon, Avante IE 11, Avant IE Compat, Avant Chrome, Avant Firefox )

  4. <a href="http://test some . spaces in domain part without slash">

    (Chrome, Firefox , IE, SM , Факел, Baidu, Maxthon, Avante IE 11, Avant IE Compat, Avant Chrome, Avant Firefox )

  5. <a href="http://test_without_slash_and_dots">

    (Chrome, FireFox, IE, SM, Torch, Baidu, Maxthon, Avant IE11, Avant IE Compat, Avant Chrome, Avant Firefox)

  6. <a href="http://a.b.c:port_with_letters_test">

    (Chrome, FireFox, IE, SM, Torch, Baidu , Maxthon, Avant IE11, A̲v̲a̲n̲t̲ I̲E̲ ̲C̲o̲m̲p̲a̲t̲, Avant Chrome, Avant Firefox)

  7. <a href="http://http://double.http.test">

    (Chrome, FireFox, IE, SM, Torch, Baidu, Maxthon, Avant IE11, Avant IE Compat, Avant Chrome, Avant Firefox)

  8. <a href="http://test @ with spaces">

    (Chrome, Firefox , IE , SM , Факел, Baidu, Maxthon, Avante IE 11, Avante IE Compat, Avant Chrome, Авантовый Firefox)

  9. <a href="http://test:password@ with spaces/">

    (Chrome, Firefox , IE , SM , Факел, Baidu, Maxthon, Avante IE 11, Avante IE Compat, Avant Chrome, Авантовый Firefox)

  10. <a href="http:// test : password @with.spaces/">

    (Chrome, Firefox, IE , SM, факел, Baidu, Maxthon, Avante IE 11, Avant IE Compate, Avant Chrome, Avant Firefox)

  11. <a href="http://test@[email protected]">

    (Chrome, Firefox, IE , SM, факел, Baidu, Maxthon, Avante IE 11, Avant IE Compate, Avant Chrome, Avant Firefox)

  12. Повторите все приведенные выше тестовые строки, заменив http:// на https://, ftp://, about://, chrome://, file://, foobar:// и т. д.

Мы видим, что если браузер не считает строку допустимым URL-адресом, он изящно завершится ошибкой, не отображая строку состояния, так что никакого вреда не будет. (За исключением того, что похоже, что в Avant IE Compat происходят некоторые ошибки с тестовой строкой "http://a.b.c:port_with_letters_test".)


Получение строки состояния браузера для отображения нужной строки — это только первый шаг. Второй шаг — запретить браузеру загружать страницу, когда пользователь нажимает на ссылку.

Это легко сделать с помощью return false:

<a onclick="return false" href="http://some.message.here./and_more_message_here">this link will not load</a>

or:

<a onclick="return f()" href="http://some.message.here./and_more_message_here">this link will not load</a>
<script>
  function f() {
    return false;
  }
</script>

Два приведенных выше фрагмента протестированы для работы в Chrome, FireFox, IE, SM, Torch, Baidu, Maxthon, Avant IE11, Avant IE Compat, Avant Chrome, Avant Firefox.


Последний шаг — использовать window.location или window.open, чтобы имитировать поведение a href. Это можно сделать в режиме онлайн: (онлайн-тест)

<!doctype html>
<a onclick="location='http://example.org'; return false" href="https://some.message.here./and_more_message_here">same tab</a>
<br><a onclick="window.open('http://example.org'); return false" href="https://some.message.here./and_more_message_here">new tab</a>


Или с помощью return func(): (онлайн-тест)

<!doctype html>
<a onclick="return f1()" href="http://some.message.here./and_more_message_here">same tab 2</a>
<br><a onclick="return f2()" href="http://some.message.here./and_more_message_here">new tab 2</a>
<script>
  function f1() {
    location = 'http://example.org';
    return false;
  }

  function f2() {
    open('http://example.org');
    return false;
  }
</script>

Или встроенный с setTimeout: (онлайн-тест)

<!doctype html>
<a onclick="setTimeout(function(){location='http://example.org';},1); return false" href="https://some.message.here./and_more_message_here">same tab 3</a>
<br><a onclick="setTimeout(function(){window.open('http://example.org');},1); return false" href="http://some.message.here./and_more_message_here">new tab 3 (doesn't work on Avant IE11 and Avant IE Compat if this link is HTTP; works if it is HTTPS or FTP)</a> 


Или используя return func() с setTimeout: (онлайн-тест)

<!doctype html>
<a onclick="return f1()" href="http://some.message.here./and_more_message_here">same tab 4</a>
<br><a onclick="return f2()" href="http://some.message.here./and_more_message_here">new tab 4 (doesn't work on Avant IE11 and Avant IE Compat if this link is HTTP; works if it is HTTPS or FTP)</a> <!-- hadn't tested this with sourcepage=HTTP. only tested with sourcepage=HTTPS and sourcepage=localwebpage -->
<script>
  function f1() {
    setTimeout(function() {
      location = 'http://example.org';
    }, 1);
    return false;
  }

  function f2() {
    setTimeout(function() {
      open('http://example.org');
    }, 1);
    return false;
  }
</script>

Два приведенных выше фрагмента также протестированы для работы в Chrome, FireFox, IE, SM, Torch, Baidu, Maxthon, Avant IE11 (с оговорками, указанными в коде), Avant IE Compat (с оговорками, указанными в коде), Avant Chrome, Avant Fire Fox.

person Pacerier    schedule 06.11.2015
comment
Затем вы можете сфокусировать привязку и непрерывно отображать обновленные данные jsfiddle.net/4rfsx0qL. - person Pierre; 15.09.2020

Кого это может касаться, простое примечание, специфичное для IE:

До IE6 и включая его вы могли:

window.status = "Hello, I'm a custom status bar note.";

Но после IE6 (протестировано IE7/8) вы делаете это так же, но вам также необходимо адаптировать параметры безопасности браузера, включив эту функцию: Инструменты - Интернет Параметры - Безопасность - Пользовательский уровень:

альтернативный текст

person Marco Demaio    schedule 01.12.2010

Во-первых, его внешний вид неодинаков во всех браузерах, а во-вторых, его функциональность был отключен в течение длительного времени по умолчанию в большинстве браузеров из соображений безопасности.

Во всяком случае, javascript для этого — простой window.status = "my text"

person Esteban Küber    schedule 18.09.2009

Ответ на вопрос 10-летней давности. Если бы идея заключалась в том, чтобы скрыть, куда ведут ссылки. я использую эту функцию

<script>
    function go2(hell){ window.location=hell; }
</script>

and the links will be like this :
<a href="#" onclick="go2('www.somewhere.net/page.html')">my link</a>
person Isma'el    schedule 22.08.2020

использовать

window.status = "whatever you want"

person Damian    schedule 18.09.2009