禁用浏览器状态栏文字(Disabling browser status bar text)

2019-07-29 06:53发布

背景

现代浏览器废除经典的状态栏,并在显示的链接目标上悬停/焦点窗户的底部,而不是画一个小提示。

的这个(不希望的,在我的情况)行为的一个例子在下面的截图中示出:


问题

  1. 是否有禁用这些提示可移植的方式?
  2. 我失去了任何明显的缺点在我的特定情况下这样做呢?
  3. 是我尝试(见下文),完成这一个合理的方式?

推理

我的工作Intranet上的Web应用程序,并想因为坦率地说,禁用此行为对于某些应用程序的具体行动, https://server/#到处看起来像一个眼睛酸痛,是因为碍眼在某些情况下,我的应用程序绘制其在该位置自己的状态栏。


我尝试

我不是一个网页开发者通过贸易,所以我的知识仍然是相当在这一领域的限制。

总之,这里是我的jQuery的尝试:

<!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:support@example.org">Email Support</a></li>
    </ol>
  </body>
</html>

patch()替换包含所有链接# (即,在我的情况下应用程序特定的动作)与span元素,使所有的“外部”链接在新标签/窗口打开似乎并没有打破自定义协议处理。

Answer 1:

是否有禁用这些提示可移植的方式?

不,不是像你上面的例子的解决方法等。

我失去了任何明显的缺点在我的特定情况下这样做呢?

你似乎缺少一个事实,即整个局面很尴尬。 为什么链接在所有如果你打算让他们看起来像按钮? 只是使用的按钮。 对于这个问题,如果你最终切换出来,跨度反正有联系何必呢? 只需使用跨度。

是我尝试(见下文),完成这一个合理的方式?

它并不像一般的做法真的很合理,因为你去除文档的锚元素,所以任何附加事件监听器,expandos的,等会丢失。 它可能适用于您的具体情况,但更理智的方法是不使用摆在首位链接(见上文)。


如果你仍然决心做这样的事情,至少不用更换a元素。 刚刚摆脱它的href属性,设置事件监听器,你在你的例子一样。 现在,它不再是一个链接,这样就不会在状态栏上显示出来(但它仍然是相同的元素,至少)。



Answer 2:

<button onclick="window.open('yoururlhere.html','_self')">your link text here</button>

请注意,这把CTRL键单击作为普通的点击和无效点击右键。 我不知道中间点击。

你也可以使用“a”和仅仅替换的onclick将href如在上面的代码,但是当我尝试,我的“答:悬停”造型停止工作。 显然,一个“A”没有一个href被视为unhoverable,至少在Firefox。 所以我切换到“按钮”和“按钮:悬停”造型,一切都很好。

我明白这一点的解决方案将被认为是不好的做法,但在某些情况下,如该网站我正在由主要的全屏照片,美学胜过原则。



Answer 3:

工具提示提供指示到其中一个链接将带他们,如果点击了用户。 它的标准浏览器用户体验的一部分,将通过您的网站的用户可以预期的。 改变这种期望,因为你不认为它看起来不错可能会导致糟糕的用户体验。 在该区域中显示的所有内容将是可见的,一旦用户停止悬停在链接标签。

我知道,任何一个环节,不告诉我,它会看起来很可疑我。



Answer 4:

试试这个

$(this).removeAttr("href");  
$(this).click(function(){}).mouseover(function(){.........}).etc


Answer 5:

这是我做的jQuery:

        //remove status bar notification...
        $('a[href]').each(function(){
            u = $(this).attr('href');
            $(this).removeAttr('href').data('href',u).click(function(){
                self.location.href=$(this).data('href');
            });
        });


文章来源: Disabling browser status bar text