【问题标题】:How can i hide the status bar in the browser?如何在浏览器中隐藏状态栏?
【发布时间】:2011-05-17 22:24:16
【问题描述】:

我有一个简单的问题,如何在浏览器的状态栏中隐藏链接。

我已经试过了:

<a href="http://www.sell.com/?referrer=225"
   onMouseOver="window.status='http://www.sell.com';
               return true" onMouseOut="window.status=''">Click here</a>

(取自教程) 但它不起作用,如果有人能帮助我,我会很高兴! ;-)

【问题讨论】:

  • 如果您在浏览器中允许,您可以执行 id。你有什么浏览器?
  • @EirNym 铬。我该怎么做?

标签: javascript html statusbar


【解决方案1】:

你不能(至少在当前的浏览器中),这是一件好事。伪装链接对网络钓鱼攻击有很大帮助。

【讨论】:

  • 是的,您可以使用 javascript 执行此操作。请参阅此示例:jsbin.com/obira4/4/edit
  • @Georg - 这不是真的这样做,Ctrl+Click、Shift+Click 等不起作用...这 模拟 点击,但它不是不一样。例如,单击中键仍会打开 href,而不是您的 onclick(尽管这因浏览器而异,我使用的是 Chrome)。
  • @Nick:你是对的。但是对于他的应用程序就足够了。
  • @Georg - 恕我直言,我认为这有点冒昧,你对他的申请一无所知,我们刚刚看到了锚的标记 :) 我们唯一知道的是它是用于推荐的,并且使用您的方法,它会失去所有那些它不处理的点击类型的引荐来源网址:)
  • @Nick:在其他 cmets 中,他告诉我们他需要它来建立会员网络。因此我认为他只是想删除 referrer=123 部分。
【解决方案2】:

由于您要求这样做是为了隐藏从属链接,因此可能有更好的方法。

循环遍历所有链接更有意义,例如,在一个宽泛的$("a.out") 选择器下,然后获取它们的真实 href 并将其存储到元素存储中,用虚拟链接替换它(如果你有 title 属性到)。

然后您附加一个单击事件处理程序,该处理程序停止默认事件,读回原始 href 并将其设置为 location.href,有效地掩饰所有启用 js 的链接。

例如mootools中的代码:

(function() {
    var links = document.getElements("a.out");

    links.each(function(el) {
        // save original
        el.store("href", el.get("href"));
        // replace it.
        el.set("href", el.get("data-link"));

        el.addEvents({
            click: function(e) {
                e.stop();
                // console.log(e);

                document.location.href = this.retrieve("href");
            },
            contextmenu: function(e) {
                e.stop();
                // do something on right click so we dont get caught
                alert("hi");
            }
        });
    });
})();

在这个标记上效果很好:

<a href="http://www.energyhelpline.com/energy/rg_home.aspx?aid=107" rel="nofollow" class="out" title="Enegry savings" data-link="http://www.energyhelpline.com/">Swap Energy Provider</a><br />

<a href="http://www.moneysupermarket.com/link.asp?Source=MSE&Section=utils" rel="nofollow" class="out" title="Money supermarket" data-link="http://www.moneysupermarket.com/">Money Supermarket</a>

使用包含我们向最终用户展示的内容的数据链接。

【讨论】:

  • 这遇到了与Georg's solution 相同的缺点:使用 Ctrl+单击、Shift+单击、中键单击时无法正常工作...
  • 这是我见过的最奇怪的建议:D
  • 呵呵。然而它在这里,工作:jsfiddle.net/dimitar/r7QLb(通过 mootools 测试)。顺便说一句@marcel:shift/ctrl点击处理得很好。只有中间点击不是。右键单击也可以通过contextmenu 事件处理。
  • 不,shift/ctrl 点击无法按预期工作:您只需覆盖它们,始终在当前窗口/选项卡中打开新位置,而不是新位置。
  • 您可以检查事件对象并查询 shift 和 control 键的状态并采取相应措施。
【解决方案3】:

您可以使用带有window.status 属性的javascript 设置状态栏的文本。例如。 http://www.htmlite.com/JS017.php

如果您真的需要禁用浏览器中的状态栏,您可以获取开源浏览器代码库的副本,删除状态栏的所有代码并将其重新分发给您的用户,但我怀疑这是你的意思/需要什么。

为什么需要在状态栏中隐藏链接?不想暴露 URL 的安全问题可以通过其他方式处理。

【讨论】:

  • 这是因为我正在做一个附属公司,我需要删除状态栏中的链接,就像所有其他附属网络一样,也许他们正在使用其他方法?
【解决方案4】:

这里有一些代码可以在浏览器状态栏区域隐藏你的原始链接文本

请注意:不确定它适用于哪些浏览器,但在 IE9 中运行良好

<a href="javascript:void(0);" onclick="location.href='http://www.google.com';return false;">If You Put Your Mouse Over This Text You Won't See Link In Status Bar Area</a>

当您将鼠标移到链接上时,您在状态栏中看到的只是javascript:void(0);

【讨论】:

    【解决方案5】:

    您可以通过为您的链接使用 javascript 来做到这一点:

    这里是how

    function goToBing() {
      window.location.href = "http://bing.com";
    }
    

    <a href="http://google.com" onclick="goToBing();return false;">Link to Google</a>
    

    正如 Nick Craver 所说,这并不适用于所有情况(控制单击、中键单击等),但应该适合您,因为您不会在 javascript 链接上中继 .

    【讨论】:

      【解决方案6】:

      这是一种使用 javascript + jQuery 的方法,适用于 ctrl 单击、shift 单击、中间单击等。它确实会破坏右键单击,但如果目标是隐藏链接,我想这没什么大不了的。

      我对你用这个做什么不负责任,我这样做主要是为了好玩,但它看起来确实很邪恶。

      JS:

      $(document).ready(function() {
         $('a').each(function() {
             var address = $(this).attr('href');
             var element = $(this).contents().unwrap().wrap('<div/>').parent();
             element.data("hrefAddress", address).addClass("link");
      
             element.click(function() {               
                 var newWindow = window.open(element.data("hrefAddress"), '_blank');
                 newWindow.focus();
             });
         });
      });​
      

      CSS:

      .link {
          color: #00f;
          text-decoration: underline;
          cursor: pointer;
      }
      
      .link:hover {
          color: #00a;
      }
      

      HTML:

      <div>
          <a href="http://www.facebook.com">Facebook</a>
          <a href="http://www.bing.com">Google</a>
          <a href="http://www.yahoo.com">Yahoo</a>
          <a href="http://stackoverflow.com">Stack Overflow</a>
      </div>​
      

      JS Fiddle

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-15
        • 2016-02-15
        • 1970-01-01
        • 1970-01-01
        • 2011-07-22
        • 2019-11-15
        • 2012-09-21
        相关资源
        最近更新 更多