【问题标题】:Anchor target _blank is blocked by browser锚定目标 _blank 被浏览器阻止
【发布时间】: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>

更新:这些&lt;a&gt; 标签是异步创建的。 AJAX 请求后,JS 会创建&lt;a&gt; 标签。

问题是谷歌浏览器会阻止打开的标签,就好像它是一个令人讨厌的弹出窗口。

如何避免这种行为? 我已经阅读了其他 StackOverflow 问题,我可以添加 &lt;a&gt; 标记数据属性并通过 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


【解决方案1】:

这不是浏览器的正常行为,而更可能是试图积极阻止弹出窗口的扩展程序。

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

【讨论】:

  • 我的答案是正确的。无论 DOM 发生什么变化,最终都会有一个包含图像和跨度的锚元素。单击它应该在另一个窗口或选项卡中打开页面。这是浏览器的默认和非常基本的功能。所以要么你有一个扩展阻止它,要么当你点击它时执行了一些 Javascript 代码,这就是被阻止的。
  • 我支持菱铁矿。请禁用所有扩展并尝试运行您的代码。
猜你喜欢
  • 2015-07-25
  • 1970-01-01
  • 1970-01-01
  • 2018-10-28
  • 2022-01-02
  • 1970-01-01
  • 1970-01-01
  • 2012-04-16
  • 2019-07-29
相关资源
最近更新 更多