cari

Rumah  >  Soal Jawab  >  teks badan

javascript - 关于js网页跳转的问题。

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

1

2

3

<code><a id="blank" >点我跳转</a>

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

</code>

以下是用过的四种方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

<code>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.是否还有更好的办法来躲开阻止弹窗?

</code>

怪我咯怪我咯2903 hari yang lalu932

membalas semua(3)saya akan balas

  • 高洛峰

    高洛峰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

    balas
    0
  • 黄舟

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

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

    balas
    0
  • 黄舟

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

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

    balas
    0
  • Batalbalas