如何在浏览器中隐藏状态栏?

3

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

我尝试过这个方法:

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

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


如果您在浏览器中允许它,您可以执行id。您使用的是哪个浏览器? - Eir Nym
@EirNym chrome。我该怎么做? - larry909
6个回答

11

目前在浏览器中你无法这样做,这是一件好事。这会对钓鱼攻击造成很大帮助,让链接伪装起来。


是的,您可以使用JavaScript来实现这一点。请参考以下示例:http://jsbin.com/obira4/4/edit - Georg Schölly
2
@Georg - 这并没有真正做到这一点,Ctrl + 单击、Shift + 单击等都无效...它模拟了点击,但并不相同。例如,中键仍然会打开 href,而不是你的 onclick(尽管这因浏览器而异,我正在使用 Chrome)。 - Nick Craver
2
@Georg - 恕我直言,我认为这有点傲慢,您对他的应用一无所知,我们只看到了一个锚点的标记 :) 我们唯一知道的是它是用于推荐的,而采用您的方法会失去所有未处理的点击类型的推荐人 :) - Nick Craver
@Nick:在其他评论中,他告诉我们他需要它用于联盟网络。因此我认为他只是想删除referrer=123这部分。 - Georg Schölly
@Georg - 我认为你严重低估了引荐部分的重要性,我们通常在谈论点击奖励,有时是钱。这绝对很重要。 - Nick Craver
显示剩余3条评论

2

以下是一些代码,可以隐藏浏览器状态栏区域中的原始链接文本

请注意:不确定它适用于哪些浏览器,但在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);

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的解决方案遇到了相同的缺点:在使用Ctrl+单击、Shift+单击、中键单击等时无法按预期工作... - Marcel Korpel
呵呵。然而它仍然可以运行:http://www.jsfiddle.net/dimitar/r7QLb/(通过mootools测试)。顺便说一句@marcel:shift / ctrl点击处理得很好。只有中间点击不能处理。右键单击也可以通过“contextmenu”事件处理。 - Dimitar Christoff
不,Shift/Ctrl 点击无法按预期工作:您只是覆盖了它们,始终在当前窗口/选项卡中打开新位置,而不是新的窗口/选项卡。 - Marcel Korpel
但是你不能可靠地打开一个新的窗口或选项卡,例如使用 window.open:这取决于浏览器如何处理它们,例如,我告诉我的浏览器应该总是在新标签页中打开一个新窗口。使用 shift+单击,我总是打开一个新窗口,而不管此设置如何。如果由于这种 JS 行为而打开了一个新选项卡,那将非常令人恼火。 - Marcel Korpel
我明白原帖作者的初衷,但我不确定知道ctrl/shift+click的用户数量是否如此之低。话虽如此,你提供了一个至少可以使用ctrl/shift+click解决的方案,这很好。 - Marcel Korpel
显示剩余3条评论

1

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

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

为什么您需要隐藏状态栏中的链接?不想暴露URL的安全问题可以用另一种方式解决。


这是因为我正在创建一个联盟公司,我需要删除状态栏中的链接,就像其他联盟网络一样,也许他们在使用另一种方法? - Simon Thomsen

0

您可以使用JavaScript为您的链接完成此操作:

以下是如何

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

并且

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

如Nick Craver所说,这并不适用于所有情况(控制键单击、中键单击等),但对于您来说应该可以工作,因为您不依赖于JavaScript链接。

0

这里有一种使用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

{{链接1:JS Fiddle}}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接