2016-03-19 117 views
0

我试图了解以下行为。锚目标_blank被浏览器阻止

我创建了一个简单的锚标记:

<a href="/example/link" target="_blank"> 
    <img src="/images/layout_open.png"> 
    <span class="open-new-tab">Open in new tab</span> 
</a> 

更新:这些<a>标签是异步创建。在AJAX请求后,JS会创建<a>标签。

问题是Google Chrome会阻止打开选项卡,就好像它是一个阻碍弹出窗口。

我该如何避免这种行为? 我已阅读其他StackOverflow问题,我可以添加<a>标记数据属性,并通过jQuery将事件绑定到它并使用JS我可以打开一个新窗口。

我不明白的是为什么在我的例子中它不工作,并在其他网站没有被阻止。它链接到相同的域和主机。

我得出结论可能是因为当我按span或img时,事件将在冒泡阶段被触发,那么它不是直接动作,而是间接动作。

这是什么原因,我该如何避免它?

感谢

更新:

我想我已经找到了解决办法。问题是,图像有一个onclick事件附加到它我以前没有。就像这样:

<a href="/example/link" target="_blank"> 
    <img src="/images/layout_open.png" onclick="showFullImage()"> 
    <span class="open-new-tab">Open in new tab</span> 
</a> 

我还没有尝试过这个,但作为@Siderite建议,阻止是不规则的浏览器行为。所以我认为Google Chrome会将此标记为间接行为。

我会尝试明天,让你知道在更新nr。 2

谢谢大家

+1

它应该没有问题。 –

+1

你是否用代码点击它,而不是用户操作? – epascarello

+0

单击图像或跨度后。我不通过Javascript单击调用点击事件。 –

回答

2

这不是一个浏览器的正常行为,但更可能是试图积极阻止弹出窗口的延伸。

转到chrome:// extensions/url来检查您的Chrome扩展程序。

+0

我的问题已更新。 –

+0

我的回答站立。不管DOM如何改变,最终你都有一个包含图像和跨度的锚点元素。点击它应该打开另一个窗口或标签中的页面。这是浏览器的默认和非常基本的功能。因此,无论是否有扩展功能阻止它,或者您点击它时都会执行一些Javascript代码,并且这些代码被阻止。 –

+0

我和Siderite站在一起。请停用所有扩展程序并尝试运行您的代码。 – IzzyCooper