为什么谷歌浏览器的弹出窗口阻止程序会在包含图像或任何其他标记的情况下拍摄链接?

Wab*_*son 7 google-chrome popupwindow popup-blocker

谷歌Chrome现在有点奇怪,因为v25不再尊重302重定向标题,并且在页面刷新时愉快地重新发布表单数据,而v24和所有其他浏览器都很好用.我不确定这只是一个临时的浏览器错误,所以让我描述一下我想要解决的谜团.

据我所知,您无法使用HTML或JavaScript打开选项卡,但默认情况下,没有显式设置维度的新窗口将作为选项卡打开.

首先我试过这个:

<a href="URL" onclick="window.open(this.href);return false">
  <img src="NICE IMAGE" alt="foo">
</a>
Run Code Online (Sandbox Code Playgroud)

这在任何地方都有效,除了在Chrome中它被作为未经授权的弹出窗口击落.有趣的是,有时当我一直点击它时,Chrome已经改变了主意,无论如何都要打开链接(如标签).但情况并非总是如此,有时候这种联系仍然存在.

经过几个小时的实验(并且从onclick简单变为简单target="_blank")后,我发现链接被杀的原因是click事件是从<img>标签中开始的<a>.当我更换了<img>一个<span>包含一些文本,并点击了<span>,链接打不开器(Chrome已经确定它为一个不需要的弹出),但是当我点击了<a>标签本身(即有一个固定大小或填充),然后它被接受了,一个新标签诞生了.

最后我把图像作为CSS背景包含在内,<a>标签仍然是空的.现在,每个浏览器中的所有内容似乎都在使用此标记:

<a href="URL" target="_blank" style="background:url('NICE_IMAGE'); height:XXX; width:XXX" title="Description"></a>
Run Code Online (Sandbox Code Playgroud)

谷歌Chrome逻辑背后的原因是,当链接包含标签时,禁止将其作为新标签打开,但是当它为空时,它可以继续吗?

Shl*_*sid 3

经过一些测试:

  • Chrome 版本 - 25.0.1364.172 m:工作正常!
  • Chrome 版本 - 26.0.1410.43 m:工作正常!

打开选项卡的“正常”方式适用于两个较新的版本。已测试!

我的代码:

<?php
echo '
     <a href="http://www.google.com" onclick="window.open(this.href); return false;">
       <img src="http://static.adzerk.net/Advertisers/2565.png" alt="foo" />
     </a>
     ';
?>
Run Code Online (Sandbox Code Playgroud)

问题应该出在你的页面上......

编辑:错误搜索 我搜索了此问题中报告和修复的错误,但找不到任何内容。

  • 同样的问题最近又出现在我正在处理的另一个网站上,并且发现第三方分析 JavaScript 库有一个奇怪的忍者错误。 (2认同)