찾다

 >  Q&A  >  본문

javascript - 关于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.是否还有更好的办法来躲开阻止弹窗?
怪我咯怪我咯2810일 전850

모든 응답(3)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-10 14:46:10

    你试试window.open(href, '_blank'),应该可以避免弹窗。

    Demo
    http://jsfiddle.net/3ar6roqx/
    http://jsfiddle.net/uyx3q5ya/

    关于Window.open,MDN上这样写:

    To open a new window on every call of window.open(), use the special value _blank for strWindowName.

    https://developer.mozilla.org/en-US/docs/Web/API/Window.open

    회신하다
    0
  • 黄舟

    黄舟2017-04-10 14:46:10

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

    회신하다
    0
  • 黄舟

    黄舟2017-04-10 14:46:10

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

    회신하다
    0
  • 취소회신하다