Это можно сделать . Google Search делает это, что видно, когда вы наводите курсор мыши на ссылку Google, в строке состояния отображается соответствующий сайт:
Тем не менее, когда вы щелкаете по нему, вы переходите к URL-адресу, зависящему от местоположения и пользовательского агента, который выглядит как https://www.google.com.sg/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CC8QFjAAahUKEwi4lP-Z4_rIAhVLk5QKHXRLAe8&url=https%3A%2F%2Fwww.example.com%2F&usg=AFQjCNFEbIRqDC65KFpmuak0aXKmnzjKVQ&bvm=bv.106923889,d.dGo
. URL отслеживает Google и еще много чего, прежде чем перенаправить вас на https://www.example.com
. Вы можете легко проверить это с помощью Network Inspector с « preserve log ».
Они используют хакерский взлом , но он работает во всех браузерах .
Хитрость заключается в том, чтобы понять, что мы можем установить в строке состояния практически все, используя только HTLM a href
(без 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 м)
Вывод 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)
Двигатель IE 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. Более странные строки могут считаться действительными в зависимости от браузера:
<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.)
(имена указаны для браузеров с ожидаемым выводом, имена вычеркнуты (" пример ") для браузеров без вывода строки состояния, а имена подчеркнуты ("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̲ 11 * ** 556
<a href="http://test some . spaces in domain part/a_b_c_d_e">
(хром, FireFox * тысячу сто шестьдесят две *, IE SM , факел, Baidu, Maxthon, Avant IE 11, Авант IE Compat, Авант хром, Авант Firefox * +1166 *)
<a href="http://test some . spaces in domain part without slash">
(хром, FireFox , IE * тысяча сто семьдесят шесть * SM , факел, Baidu, Maxthon, Avant IE 11, Авант IE Compat, Авант хром, Авант Firefox * одна тысяча сто семьдесят девять *)
<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 , Факел , 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">
(хром FireFox IE SM , фонарик, Baidu, Maxthon, Avant IE 11, Avant IE Compat, Avant Chrome Avant Firefox )
<a href="http://test:password@ with spaces/">
* Тысяча двести сорок два * (хром, FireFox , IE * +1246 *, SM * 1 248 *, факел, Baidu, Maxthon, Avant IE 11, Авант IE Compat, Авант хром, * один тысяча двести сорок девять * Avant Firefox )
<a href="http:// test : password @with.spaces/">
(Chrome, FireFox, IE , SM, факел, Baidu, Maxthon, Avant IE 11, Avant IE Compat, Avant Chrome, Avant Firefox)
<a href="http://test@double@a.b.c.d">
(C̲h̲r̲o̲m̲e̲, FireFox, IE , SM, T̲o̲r̲c̲h̲, B̲a̲i̲d̲u̲, Maxthon, A̲v̲a̲n̲t̲ I̲E̲ ̲1̲1̲, A̲v̲a̲n̲t̲ I̲70̲6969 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 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 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
. Это может быть сделано inline: ( онлайн-тест )
<!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 Firefox.