打开新标签页或窗口时,JavaScript链接无法工作

3

我有一些类似于这样的链接

<a href="#" onclick=aFunction(this)>link</a>

“aFunction”是一个在当前窗口中打开链接的函数。

当单击此链接时,它可以正常工作并打开链接,但如果选择“在新标签页中打开”或“在新窗口中打开”,则无法正常工作。

“aFunction”的代码大致如下:

aFunction(object)
{
   object.href = "www.mypage.com"
}

这在所有浏览器中都会发生吗? - Pointy
我已在FF 3.5和IE 7中进行了测试。 - Torque
4个回答

1

使用“在新X中打开”上下文菜单不会触发单击事件。如果您的代码只是为了设置新窗口的地址,那么最好执行以下操作

<a href="http://www.mypage.com" target="_new">link</a>

可以考虑使用“而不是”。这样做可能无法通过验证,但它会更好地降级。


我无法使用 href 参数,因为“aFunction”根据某些条件可能会打开不同的链接。 - Torque
2
然后,您将不得不想出如何捕获各种浏览器中的“在X中打开”事件。使用JavaScript操纵链接就像走雷区一样 - 无论您有多幸运,总会有一个步骤会出错。 - Marc B

0
为什么你要这样做,而不是直接将URL放在href参数中呢?即使你正确使用href属性,你仍然可以通过添加单击处理程序来执行其他操作。
<a href="http://www.mypage.com">link</a>

<script type="text/javascript">
$(function() { // using jQuery for simplicity, but other methods work, too.
   $('a').click( function() {
        // do some other stuff
   });
});
</script>

请注意,如果不返回 false(或使用 preventDefault()),我们允许正常的单击操作在我们的 JavaScript 运行完毕后继续。

我无法使用href参数,因为“aFunction”根据某些条件可以打开不同的链接。 - Torque
@Torque - 你仍然可以给它一个值,以便在没有JavaScript的情况下回退到一些有用的东西。或者,也许不要使用锚点,只需使用样式化的SPAN,这样用户就没有“在...中打开”的选项了。 - tvanfosson

0
使用这个:
<a id="mylink" href="#">link</a>

<script>
function changeUrl()
{
   if( /* some condition here */ )
      document.getElementById('mylink').href = "www.someurl.com";
   else
      document.getElementById('mylink').href = "www.someotherurl.com";
}
</script>

这样做可以确保浏览器的“在新选项卡中打开链接”功能不会中断

如果用户在页面上触摸了某些内容导致条件发生变化,您需要在每次用户触摸时调用changeUrl函数。


-1
请查看下面的函数,用于在新窗口中打开URL:
function load() {
var load = window.open('http://www.domain.com','','scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,location=no,status=no');}

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