Как мы можем изменить текст, отображаемый в строке состояния браузера, с помощью JavaScript (или jQuery)?
Как отобразить текст в строке состояния браузера?
Ответы (6)
jQuery для этого не нужен:
<script>
function writetostatus(input){
window.status=input
return true
}
</script>
Однако в большинстве новых браузеров нельзя установить текст в строке состояния из JavaScript.
Это можно сделать. Это делает поиск 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)
Выход факела: (v42.0.0.10546)
Вывод Baidu: (v43.19.1000.119)
Вывод Maxthon: (v4.4.8.1000)
Также нет необходимости использовать #
(идентификатор фрагмента). Браузеры также будут рассматривать такой текст, как http://some.message.here./and_more_message_here
, как действительный URL-адрес. Более странные строки могут считаться допустимыми в зависимости от браузера:
<a href="http://a.b.c.d/test_symbols_!#$%^&*()[]{};:'".><,//=+``~">
(Chrome, FireFox, IE, SM, Torch, Baidu, Maxthon, Avant IE11, Avant IE Compat, Avant Chrome, Avant Firefox.)
(Имена перечислены для браузеров с ожидаемым выводом, имена зачеркнуты ("
example") для браузеров без вывода строки состояния, а имена подчеркнуты ("e̲x̲a̲m̲p̲l̲e̲") для браузеров с неожиданным выводом/поведением. Протестировано с версиями браузера, такими же, как перечисленные выше.)<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.)
<a href="http://test some . spaces in domain part/a_b_c_d_e">
(Chrome,
Firefox S>, IE,SM S>, Факел, Baidu, Maxthon, Avante IE 11, Avant IE Compat, Avant Chrome,Avant Firefox S>)<a href="http://test some . spaces in domain part without slash">
(Chrome,
Firefox S>, IE,SM S>, Факел, Baidu, Maxthon, Avante IE 11, Avant IE Compat, Avant Chrome,Avant Firefox S>)<a href="http://test_without_slash_and_dots">
(Chrome, FireFox, IE, SM, Torch, Baidu, Maxthon, Avant IE11, Avant IE Compat, Avant Chrome, Avant Firefox)
<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)<a href="http://http://double.http.test">
(Chrome, FireFox, IE, SM, Torch, Baidu, Maxthon, Avant IE11, Avant IE Compat, Avant Chrome, Avant Firefox)
<a href="http://test @ with spaces">
(Chrome,
Firefox S>,IE S>,SM S>, Факел, Baidu, Maxthon, Avante IE 11, Avante IE Compat, Avant Chrome,Авантовый Firefox)<a href="http://test:password@ with spaces/">
(Chrome,
Firefox S>,IE S>,SM S>, Факел, Baidu, Maxthon, Avante IE 11, Avante IE Compat, Avant Chrome,Авантовый Firefox)<a href="http:// test : password @with.spaces/">
(Chrome, Firefox,
IE S>, SM, факел, Baidu, Maxthon, Avante IE 11, Avant IE Compate, Avant Chrome, Avant Firefox)<a href="http://test@[email protected]">
(Chrome, Firefox,
IE S>, SM, факел, Baidu, Maxthon, Avante IE 11, Avant IE Compate, Avant Chrome, Avant Firefox)Повторите все приведенные выше тестовые строки, заменив
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.
Кого это может касаться, простое примечание, специфичное для IE:
До IE6 и включая его вы могли:
window.status = "Hello, I'm a custom status bar note.";
Но после IE6 (протестировано IE7/8) вы делаете это так же, но вам также необходимо адаптировать параметры безопасности браузера, включив эту функцию: Инструменты - Интернет Параметры - Безопасность - Пользовательский уровень:
Во-первых, его внешний вид неодинаков во всех браузерах, а во-вторых, его функциональность был отключен в течение длительного времени по умолчанию в большинстве браузеров из соображений безопасности.
Во всяком случае, javascript для этого — простой window.status = "my text"
Ответ на вопрос 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>
использовать
window.status = "whatever you want"