javascript - 当用户在新窗口中打开时,如何使onclick“window.location”也能正常工作

时间:2010-10-13 17:03:38

标签: javascript javascript-events

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

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

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

有办法做到这一点吗?

提前致谢

5 个答案:

答案 0 :(得分:4)

你只需要一个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>

这是live demo的工作原理。

答案 1 :(得分:2)

  

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

不,但您可以使用JS在文档加载后(或在链接的onfocusonhover事件中将链接href设置为隐藏的URL,尽管感觉相当笨拙不完整的)。

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

这是Google用来计算搜索结果页面中的外发链接的方式。

答案 2 :(得分:1)

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

答案 3 :(得分: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']");

答案 4 :(得分:0)

编辑:也许我不清楚......对不起。使用“#”会阻止他们在新窗口中打开不同的页面。这可能不适用于您的情况,我不知道您是否试图通过隐藏URL来获得搜索引擎优化的功能。我的解决方案几乎和你目前所做的一样,除了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>