JS最佳实践 - window.open()应该放在href还是onclick中?

5

我有一个关于优化的问题,选择以下两个方案之间:

<a href="#" onClick="javascript:window.open('myUrl.com');">link-1</a>

并且:

<a href="javascript:window.open('myUrlBis.com');">link-2</a>

有哪个更好?或者更兼容?谢谢。

2
没有首选项。您应该研究JavaScript事件绑定,并侦听链接的单击。 - Greg Pettit
4个回答

17

最佳实践是使用 target属性

<a href="http://myUrl.com" target="_blank">link-1</a>
如果那不适合,一个`click`事件处理程序(最好不是通过属性分配)会是我的选择。

为什么这是更好的实践? - dwjohnston
@dwjohnston - 这是语义化的,所以浏览器(/屏幕阅读器等)可以指示将要发生的事情,而不需要 JavaScript。 - T.J. Crowder

3

没有一个

使用 hreftarget 将其变成常规链接

<a id='my-link' target="_blank" href="http://myUrlBis.com">link-2</a>

如果您需要使用JavaScript处理单击事件,可以使用以下内容。
document.getElementById("my-link").onclick = function(e) {
  // Do some processing here, maybe 
  window.location = this.href
  // Return false to prevent the default action if you did redirect with script
  return false;
}

0

没有 JavaScript

<a target="_blank" href="myUrlBis.com">link</a>

使用JavaScript

<a target="_blank" href="http://www.example.com" id="myLink">link</a>
<script>
    document.getElementById("myLink").onclick = function(){ //attach click event to link
        var winPop = window.open(this.href);  //`this` is reference to link, get href
        return false;  //prevent click event from clicking the link
    }
</script>

JSFiddle 示例


-1

以下代码应该没问题。

<a href="javascript:void(0);"  onclick="window.open(url)">

发现在IE(版本:11)中出现以下代码问题。
<a onclick="javascript:window.open(url)">

问题:当在href属性中使用javascript window.open代码时,IE会刷新父窗口。

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