Google和Yahoo如何替换浏览器状态栏中的URL?

Mik*_*e W 18 javascript yahoo url statusbar

在Google和Yahoo搜索页面上,10个搜索结果链接的网址实际上指向google.com或yahoo.com.URL具有额外的参数,允许google.com或yahoo.com在单击链接时重定向到实际搜索结果.当用户将鼠标悬停在链接上时,搜索结果网址(而不是google.com或yahoo.com网址)会显示在浏览器的状态栏中.

我想知道他们是怎么做到的.

很多年前,这可以通过设置一些设置window.status的javascript来实现,但这似乎不再起作用,正如可靠的跨浏览器设置状态栏文本的方式所解释的那样

我有一个看起来像这样的链接: <a href="http://somedomain.com/ReallyLongURLThatShouldNotBeSeenInTheStatusBar" onmouseover="window.status='http://niceShourtUrl.com/'" onmouseout="window.status=''">Click Me</a>

此链接尝试使用window.status策略,但它不起作用.如何修复此链接,使其像Google和Yahoo搜索结果页面上的链接一样?在此示例中,当用户将鼠标悬停在链接上时,我希望" http://niceShourtUrl.com/ "显示在状态栏中.

Ada*_*kin 13

很难阅读源代码,但您会看到实际上URL(在<a>标签中)是正确的目标URL,这就是浏览器状态栏显示正确URL的原因(而不是它重定向的跟踪链接)你真的点击).然后有一些onclickJavaScript可以在浏览器的默认操作(链接之后)发生之前拦截点击.


And*_*ris 7

Google在每个链接上都有onMouseDown处理程序,可以更改指向Google重定向的原始来源的链接.所以onmousedown替换了链接,当onClick出现时(在onmousedown之后不久)链接指向已经到原始方向以外的其他地方.

步骤1.用户点击链接(鼠标按钮关闭)

第2步.onMouseDown事件触发器

步骤3.链接目标(href值)被更改

步骤4.鼠标按钮出现

步骤5. onClick事件触发器

步骤6.浏览器看到点击了一个链接并将用户转发到所需的目的地(由已经改变的href值设置)

步骤7.浏览器打开Goog​​le重定向页面,然后将用户转发到原始目标

更新:Google过去仅用于跟踪onmousedown事件的点击次数,并且未更改链接目标.当在链接上按下鼠标按钮时,对谷歌服务器进行了图像加载请求,计算了点击(onmousedown => new Image("coogle.counter.server.com/link=www.pressed.com")),但我猜它被误用或者不够可靠,他们决定使用当前的链接更改技术.


Mit*_*sey 6

我认为他们实际上在链接中有完整href的链接.但是他们使用javascript来捕捉onclick,然后当你点击链接时,它会通过他们的网站进行路由.