当用户在新窗口中打开时,如何使 onclick“window.location”也起作用

问题描述 投票:0回答:5

要隐藏链接的真实目的地,我使用以下代码:

<a href="http://example.com" onclick="window.location='http://url-i-want-to-hit.com/'; return false;">Click me</a>

但是,如果我右键单击然后在新窗口中打开,它会转到锚点 href 标记中指定的 URL。我希望它转到 JavaScript 中指定的 URL。

有没有办法做到这一点?

javascript dom-events
5个回答
5
投票

你只需要一个 mousedown 处理程序来伪造它们......

<a href="http://example.com"
   onmousedown="this.href2 = this.href;
                this.href = 'http://url-i-want-to-hide.com/';"
   onmouseout="if(this.href2) this.href = this.href2;">Test</a>

2
投票

但是,如果我右键单击然后在新窗口中打开,它将转到锚点 href 标记中指定的 url。我希望它转到 javascript 中指定的 url。

不,但是您可以在文档加载后使用 JS 将链接 href 设置为隐藏的 URL(或者在链接的

onfocus
onhover
事件中,尽管这感觉相当笨拙和不完整)。

<a onfocus="this.href='hidden_url'" .....>

这是谷歌用来计算从搜索结果页面传出的链接的方式。


1
投票

你不能这样做。右键单击使用真正的锚点,而您正在使用 javascript 覆盖锚点的点击功能。我们有点欺骗,不是吗?


1
投票

如何将真实的 url 存储在数据库中并在 php 中调用它们?

www.yourwebsite.com/url.php?id=3

url.php // 类似

$query = "SELECT * FROM `urls` WHERE `id` = " . intval($_GET['id']);
$row = mysqli_fetch_assoc($query);

header ("location: $row['url']");

0
投票

编辑:也许我不清楚……对不起。使用“#”会阻止他们在新窗口中打开不同的页面。这可能不适用于您的情况,我不知道您是否试图通过隐藏 URL 来通过 SEO 完成某些事情。除了 href 中的“#”之外,我的解决方案实际上与您目前正在做的相同,我只是更喜欢将 window.location 包装在一个函数中……个人偏好。

<a href="#" onclick="SendToUrl(); return false;"">Click Here</a>


<script language="javascript">
   function SendToUrl(){
       window.location='http://url-i-want-to-hide.com/'
    }
</script>
© www.soinside.com 2019 - 2024. All rights reserved.