【问题标题】:Javascript link does not work when open in new tab or window在新选项卡或窗口中打开时,Javascript 链接不起作用
【发布时间】:2023-04-04 18:48:02
【问题描述】:

我有这样的链接

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

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

点击这个链接是可以的,打开链接,但是如果点击“在新标签页打开”或者“在新窗口打开”就不行了。

一个函数代码是这样的:

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

【问题讨论】:

  • 所有浏览器都会出现这种情况吗?
  • 我已经在 FF 3.5 和 IE 7 中测试过

标签: javascript html hyperlink


【解决方案1】:

使用“在新 X 中打开”的上下文菜单不会触发点击事件。如果你的代码只是用来设置新窗口的地址,那么你最好这样做

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

相反。它不会验证,但会更好地降级。

【讨论】:

  • 我不能使用 href 参数,因为“aFunction”可以根据某些条件打开不同的链接。
  • 那么你必须弄清楚如何在各种浏览器中捕捉“在 X 中打开”事件。使用 javascript 来操作这样的链接是一个雷区——无论你多么幸运,总有一个步骤会成功。
【解决方案2】:

为什么你会做这样的事情而不是把 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 - 你仍然可以给它一个值,以便它在没有 javascript 的情况下回退到有用的东西。或者,甚至不使用锚标记,只使用样式化的 SPAN,这样用户就没有“在...中打开”的选项
【解决方案3】:

使用这个:

<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

【讨论】:

    【解决方案4】:

    请在下面找到在新窗口中打开网址的功能:

    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');}
    

    【讨论】:

      猜你喜欢
      • 2012-06-22
      • 2021-01-03
      • 2013-11-11
      • 2013-03-11
      • 2010-09-12
      • 2012-03-19
      • 1970-01-01
      • 2013-03-22
      相关资源
      最近更新 更多