调用html href或JavaScript打开一个新窗口:解决方案

时间:2014-03-12 16:05:39

标签: javascript html reusability

我已经看到很多关于将超链接传递给JavaScript并且只执行一个或另一个的表单上的许多问题。没有完整的解决方案既可重复使用又紧凑。我的答案包含解决方案。

1 个答案:

答案 0 :(得分:0)

是的,我两次都返回false,以确保如果启用JavaScript并调用该函数,则html href不会触发。目标是防止当前页面更改并在新选项卡中调用请求的链接。它的设计方式是通过传递href的任何调用都可以重用。这样就不会出现id或标签名称的循环。这也使代码保持小巧紧凑。

以下是解决方案:

 <a onclick="return init(this.href)" href="http://..." >Something</a>

    <script>
   function init(href){
    if(window.open(href))
          {return false;}
    else {return false;}    
     }
    </script>

onclick会将href传递给init(),html中的返回如果为true将调用该函数并且href将同时触发。这将导致新选项卡和当前选项卡显示相同的内容。这不是我们想要的。该功能将链接打开到新选项卡。无论什么强制html href不执行,它都将返回false。因此,当前选项卡将保持不变,新选项卡将显示被调用链接。如果禁用用户脚本,则只会触发html,在当前选项卡中显示该链接。

这是浏览器兼容的,并且可以通过任何链接传递完全重复使用。

我找不到任何可以实现此目的的文档,所以我决定发布一个不需要id或tagName的解决方案。

希望这有助于那些正在寻找类似解决方案的人的答案。