最近の Google Chrome は、v25 が 302 リダイレクト ヘッダーを尊重しなくなり、ページの更新時にフォーム データを喜んで再投稿するという点で少し奇妙です。これが一時的なブラウザーのバグなのかどうかはわかりません。解決しようとしている謎について説明させてください。
私の知る限り、HTML や JavaScript を使用してタブを開くことはできませんが、明示的にサイズを設定しない新しいウィンドウは、デフォルトでタブとして開きます。
最初に私はこれを試しました:
<a href="URL" onclick="window.open(this.href);return false">
<img src="NICE IMAGE" alt="foo">
</a>
これは、許可されていないポップアップ ウィンドウとして撃墜された Chrome を除いて、どこでも機能していました。興味深いことに、私がクリックし続けると、Chrome の気が変わって、とにかくリンクが (タブとして) 開かれることがありました。ただし、常にそうであるとは限りません。リンクが無効なままになることもありました。
数時間の実験 (および からonclick
単純な に変更target="_blank"
) の後、リンクが強制終了された理由は、クリック イベントが<img>
内のタグから開始されたためであることがわかりました<a>
。をテキストを含むに置き換えて<img>
をクリックすると、リンクが開けませんでした (Chrome はそれを不要なポップアップとして識別しました)。それが受け入れられ、新しいタブが誕生しました。<span>
<span>
<a>
最後に、画像を CSS の背景として含めただけで、<a>
タグは空のままでした。このマークアップを使用すると、すべてのブラウザーですべてが機能するようになりました。
<a href="URL" target="_blank" style="background:url('NICE_IMAGE'); height:XXX; width:XXX" title="Description"></a>
リンクにタグが含まれている場合、新しいタブとして開くことは禁止されていますが、空の場合は先に進むことができるという Google Chrome のロジックの背後にある理由は何でしょうか?