关于js网页跳转的问题。

目前遇到一个问题,有一个超链接a,点一下打开一个新页面(注意是新页面,不是从本页面打开,而且不要浏览器进行组织弹窗),把要跳往的链接写在一个隐藏的a中,模拟点击这个隐藏的超链接,分别用了以下方法:
html的代码如下:

<a id="blank" >点我跳转</a>
<a style="display:none;" id="blank1" href="http://sf.gg" target="_blank">我是隐藏的那个超链接</a>

以下是用过的四种方法:

1. window.open()    // 妥妥的,浏览器阻止弹窗
   代码:$('#blank').on('click', function (e) {
            e.preventDefault();
            window.open('http://sf.gg', '_blank');
        });

2. $('a').get(0).click();  // 同上,阻止弹窗
    代码:$('#blank').on('click', function (e) {
            e.preventDefault();
            $('#blank1').get(0).click();
        });

3. $('a').trigger('click'); // 同上,阻止弹窗
     代码:$('#blank').on('click', function (e) {
            e.preventDefault();
            $('#blank1').trigger('click');
        });

4. 写一个方法,
    代码:targetLink() {
            // 获得隐藏的a超链接
            var oHideA = document.getElementById('a');
            oHideA.click();
          }
          <a onclick="targetLink(); ">点我打开新页面</a>    // 成功,没有阻止弹窗

我的问题:
1.为什么第4个能成功呢?
2.不是不建议在标签里写js吗?
3.是否还有更好的办法来躲开阻止弹窗?
阅读 4.6k
3 个回答

代码不全,你还是贴个jsFiddle链接吧

你把jQuery的click()和原生的click()函数搞混啦,只有原生的click()是点击链接打开的。第二个方法你写成$("#click1")[0].click()就可以生效啦,第三个和第二个实际上是一样的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题