JS的最佳实践 - 在href或onclick中的window.open()?

时间:2012-06-12 16:38:58

标签: javascript html optimization compatibility

关于优化的问题,在:

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

和:

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

一个比另一个好吗?还是更兼容?感谢。

4 个答案:

答案 0 :(得分:17)

最佳做法是使用the target attribute

<a href="http://myUrl.com" target="_blank">link-1</a>

如果这不合适,我将采用click处理程序(理想情况下不通过属性分配)。

答案 1 :(得分: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;
}

答案 2 :(得分: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 Example

答案 3 :(得分:0)

下面的代码应该没问题。

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

使用以下代码

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

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