【问题标题】:How do browsers display the target url of a link浏览器如何显示链接的目标 url
【发布时间】:2013-05-13 23:27:25
【问题描述】:

如果您对某个字符串进行 google 搜索,浏览器会以可点击链接的形式呈现搜索结果。现在我的问题来了。如果将鼠标悬停在左下角的这些链接上,您将能够看到如果您点击浏览器将带您到达的位置。我想知道浏览器是怎么做的。

我不认为搜索结果实际上是基于 HTML 的锚标记。至少这是我的感觉。但即使在这些情况下,只要我们将鼠标悬停在链接上,就会显示目标网址。

请分享你对它是如何完成的想法。我需要在 js 代码中做同样的事情。

-->感谢您的回答。我不得不问这个是有原因的。我必须在要在 SWT 浏览器和 java GUI 中显示的网页之间启用拖放功能。为了做到这一点,在 mousedown 事件中,我正在触发一个 javascript 代码。这基本上获取了用户单击的锚元素上的 HREF 属性。 **现在是关键。如果我打开 google.com 并且如果我将鼠标按下 IMAGE,YOUTUBE,GMAIL,DRIVE 链接,则目标 URL 会正常显示。但是,如果我尝试在谷歌搜索或我们需要启用拖放功能的原始瘦客户端应用程序中的任何结果上执行鼠标操作,则链接不会出现。但是,底部的浏览器会显示目标链接。我很困惑。这就是为什么我认为它不是锚标签的原因。

我尝试使用以下代码为所有锚元素注册一个 onmousedown。但是,如果用户在任何搜索结果上执行 mousedown 操作...不会出现警告框。

var elements = document.getElementsByTagName('a');
for(var i=0;i<elements.length;i++)
{
    elements[i].onmousedown = function()
    { 
          alert(this.getAttribute('href'));
    }
} 

【问题讨论】:

  • window.status... 至少旧的 IE 是这样工作的
  • 你看的是源代码还是开发者工具?
  • 我听说 google 在他们的网站上有一个 javascript,当您将鼠标移到链接上时,它会明确显示目标网址
  • 只是一个常规链接。自己看一下源代码。
  • 你是这个意思吗?:jsfiddle.net/73FhL/1

标签: javascript jquery browser


【解决方案1】:

我不认为搜索结果实际上是基于 HTML 的锚标记。至少这是我的感觉。

你感觉不对。搜索结果为&lt;a&gt; 元素。

但即使在这些情况下,只要我们将鼠标悬停在链接上,就会显示目标网址。

浏览器必须知道链接的去向。它可以让它的用户界面做任何它喜欢的事情。

请分享你的想法。

使用本机代码

我需要在 js 代码中做同样的事情。

window.status = element.href 在鼠标悬停事件中。

现在一些浏览器会阻止这一点,因为它对于网络钓鱼攻击来说太有用了(欺骗用户去他们预期去的地方以外的地方)。

【讨论】:

  • 流畅的答案 +1 - 用我的平均英语无法更快地总结出来:)
  • Altering window.status 在 Firefox、Chrome 或 IE 9(可能更早版本)中没有任何作用。
  • "Some" 可能有点低估了事情:)
  • @Quentin 我添加了一些附加信息。请检查一下。
【解决方案2】:

至少来自 google 的搜索引擎结果被呈现为 html 锚标记。无需猜测检查搜索页面的html来源。

所以关于在悬停状态栏中显示链接的部分,这是标准行为(当我将鼠标悬停在你的名字上时,我会看到你的 SO 个人资料的 URL)。

我将迈出一大步,假设您想弄清楚,如何将链接呈现为锚标记,但仍然做一些 javascripty 的东西,而不是默认的锚标记行为。就像 google 如何将跟踪信息附加到 url 而不是只在选项卡中打开搜索结果 url。

为此,您需要将事件处理程序附加到锚标记以捕获“点击”事件,防止真正的点击事件传播,并改为执行您的操作。所以 HTML 看起来像一个锚标记,但当你点击它时,它就是你的全部 javascript。

您会在jQuery: Capture anchor href onclick and submit asynchronously 之类的问题上找到很多这样做的参考资料,或者只是关于如何捕获锚点点击/href 事件的基本谷歌搜索。

希望这会有所帮助。

【讨论】:

  • 我添加了其他信息。请检查。
  • 您正试图对一个并非为它设计的页面做一些事情! Google 搜索结果中的链接已经有一个鼠标按下事件处理程序。 .这也可能发生在任何其他网页上。你应该重新考虑你想要达到的目标,并找出一种不依赖原始页面的js的方法
  • Akshya...我没有使用谷歌现有的 js。我正在从我的 java 应用程序中编写或者执行一个 js sn-p。
  • 但是谷歌的js正在执行中。并且它的处理程序正在抑制您要捕获的事件。顺便说一句,它的 akshay 不是 akshya。
  • 但是我需要合并拖放行为。为此,我确定了 ser 将要拖动的 url。而且我看不出有什么出路:/
【解决方案3】:

您可以通过这种方式更改状态栏:href 是状态栏中的文本,当用户单击链接时,它会更改为真实的 url:

    <a href="status bar" onmousedown="this.href='real page';">Link</a>

【讨论】:

  • +1 太脏了!我不敢相信给浏览器牛这么容易!但当你看到它完成时,它就很明显了。
【解决方案4】:

如果您查看 Google 搜索页面的源代码,您会看到链接具有格式

<a onmousedown="return rwt(...)" href="http://somelink.com/somepath/">...</a>
  • 最初,链接的href 属性是正确的,因此它在悬停时正确显示。
  • 但是,它会在点击时被 Google 的 rwt 函数改变,该函数将 href 属性更改为 http://www.google.com/url?... URL。
  • 这种变化发生在鼠标按下时down -- 就在浏览器跟随链接之前(当按钮被释放时发生up)。

您可以通过右键单击结果链接并在单击时查看 URL 更改来轻松观察此行为。

【讨论】:

  • 附加信息。已添加。请检查。
猜你喜欢
  • 1970-01-01
  • 2017-06-15
  • 1970-01-01
  • 2023-02-10
  • 2018-02-23
  • 2015-09-16
  • 2012-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多