【发布时间】:2016-03-19 14:45:58
【问题描述】:
我正在尝试理解以下行为。
我创建了一个简单的锚标记:
<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> 标签。
问题是谷歌浏览器会阻止打开的标签,就好像它是一个令人讨厌的弹出窗口。
如何避免这种行为?
我已经阅读了其他 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 建议的那样,阻止不是常规的浏览器行为。所以我认为谷歌浏览器会将此标记为间接操作。
我会在明天尝试并在 Update nr 中通知您。 2
谢谢大家
【问题讨论】:
-
它应该可以正常工作。
-
您是用代码而不是用户操作点击它吗?
-
点击图片或span后。我不点击通过Javascript调用点击事件。
-
锚点是否附加了其他代码?
-
我找到了解决方案。最后是因为图像附加了一个 onclick 事件,所以它会被检测为间接操作。我还没有尝试过,但我刚刚发现了那个 onclick 事件。
标签: javascript jquery html css