Google Chromeは、最近、v25が302リダイレクトヘッダーを尊重しなくなり、ページの更新時にフォームデータをうれしく再投稿しますが、v24や他のすべてのブラウザはうまく再生できます。私はこれが単なる一時的なブラウザのバグかどうか分からないので、解決しようとしている謎を説明しましょう。Google Chromeのポップアップブロッカーは、画像やその他のタグが含まれているとリンクを撃退するのはなぜですか?
私が知る限り、HTMLまたはJavaScriptを使用してタブを開くことはできませんが、明示的に設定された寸法のない新しいウィンドウはデフォルトでタブとして開きます。
最初に私はこれを試してみた:
<a href="URL" onclick="window.open(this.href);return false">
<img src="NICE IMAGE" alt="foo">
</a>
これは、それが不正なポップアップウィンドウとして撃墜されたクロムを除いて、どこでも働いていました。興味深いことに、私がクリックし続けると、Chromeが心を変え、とにかく(タブとして)リンクを開くようにしました。これは必ずしもそうではありませんでしたが、リンクが死んでいる場合もありました。実験(と簡単なtarget="_blank"
へonclick
から変更した)私はリンクが殺された理由は、クリックイベントが<a>
内<img>
タグから始まっていることであることを発見したの数時間後
。 <img>
を<span>
に置き換えて、テキストが含まれていて、<span>
をクリックしたときにリンクが開けませんでした(Chromeはこれを不要なポップアップと認識しました)。しかし、<a>
タグ自体をクリックしたとき詰め物)、それが受け入れられ、新しいタブが生まれました。
最後に、画像をCSS背景として追加しました。<a>
タグは空のままです。すべては、このマークアップを持つすべてのブラウザで今動作しているようだ:
<a href="URL" target="_blank" style="background:url('NICE_IMAGE'); height:XXX; width:XXX" title="Description"></a>
リンクはタグが含まれている場合、それが新しいタブとして開かれてから禁止されていることを、Google Chromeのロジックの背後にある理由は何ができますか、それが空の時、それは先に行くことができますか?いくつかのテストの後
私の推測では、Chromeは、ウェブユーザーがポップアップとして終わるリンクをクリックするという一般的な方法をブロックしようとしています。主に、サイトがフルページのトランスペアレントイメージを作成したときにそのリンクです。表示されませんが、基になる要素をクリックしようとしているときにクリックします。しかし、これはちょうど推測です... – chrixbittinx
影響を受けるタグにバインドされた他のイベントはありますか?これは、ポップアップブロッカーの動作に影響する可能性があります。あなたがデモページを提供できるなら、非常に役に立ちます。 – mrks
また、Inspector(Sources)のEvent Listener Breakpointsをアクティブにして、要素をクリックしたときに発生するイベントの種類をお知らせください。 – mrks