Отключение текста в строке состояния браузера
Современные браузеры избавляются от классической строки состояния и вместо этого рисуют маленькую подсказку в нижней части своих окон, которая отображает цель ссылки при наведении / фокусе.
Пример такого (нежелательного, в моем случае) поведения показан на следующем снимке экрана:
Questions Is there a portable way to disable these tooltips? Am I missing any obvious drawbacks to doing this in my particular situation? Is my attempt (see below) a reasonable way of accomplishing this? ReasoningЯ работаю над веб-приложением в интрасети и хотел бы отключить это поведение для некоторых действий для конкретного приложения, потому что, честно говоря,https://server/#
везде выглядит как рана для глаз и навязчиво, так как в некоторых случаях мое приложение рисует свою собственную строку состояния в этом месте.
По профессии я не веб-разработчик, поэтому мои знания в этой области все еще довольно ограничены.
Во всяком случае, вот моя попытка с jQuery:
<code><!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Target Tooltip Test</title> <style> a, span.a { color: #F00; cursor: pointer; text-decoration: none; } a:hover, span.a:hover { color: #00F; } a:focus, span.a:focus { color: #00F; outline: 1px dotted; } </style> <script src="http://code.jquery.com/jquery-1.7.2.min.js"></script> <script> $(document).ready(function() { patch(); }); function patch() { $('a').each(function() { var $this = $(this).prop('tabindex', 0); if($this.prop('href').indexOf('#') == -1 || $this.prop('rel').toLowerCase() == 'external') { return; } var $span = $('<span class="a" tabindex="0"></span>'); $span.prop('data-href', $this.prop('href')); $span.text($this.text()); $this.replaceWith($span); }); $('a[rel="external"]').click(function() { window.open($(this).prop('data-href')); return false; }); $('span.a').click(function() { location.href = $(this).prop('data-href'); }).keypress(function(event) { if(event.keyCode == 13) { location.href = $(event.target).prop('data-href'); } }).focus(function() { window.status = ''; // IE9 fix. }); } </script> </head> <body> <ol> <li><a href="http://google.com" rel="external">External Link</a></li> <li><a href="#foo">Action Foo</a></li> <li><a href="#bar">Action Bar</a></li> <li><a href="#baz">Action Baz</a></li> <li><a href="mailto:[email protected]">Email Support</a></li> </ol> </body> </html> </code>
patch()
заменяет все ссылки, содержащие#
(т. е. специфичные для приложения действия в моем случае) сspan
элемент, делает все "внешними" ссылки открываются в новой вкладке / окне и, по-видимому, не нарушают обработку пользовательского протокола.