リンクを新しいウィンドウで開きたい場合、通常はリンクの後に target="_blank" を追加します。transitional DOCTYPE (xh tml1-transitional.dtd) を使用する場合は問題ありません。 strict DOCTYPE (xhtml1-strict.dtd) の場合、このメソッドは W3C 検証に失敗し、次のエラー メッセージが表示されます。
「(この HTML バージョンでは)この要素には属性ターゲットがありません」
HTML4.01/XHTML1.0/XHTML1.1 の厳密な DOCTYPE では、target="_blank"、target="_self" などの構文は無効であり、JavaScript を介してのみ実装できることがわかりました。
友人から、なぜ target="_blank" が使用できないのかと尋ねられました。この属性は非常に便利です。あはは、W3C の専門家がどう考えているかは知りませんが、私の知る限り、これは主に「使いやすさと親しみやすさ」に関するものです。外国人は、ユーザーの同意や明確なプロンプトなしに新しいウィンドウを開くことは失礼だと考えているからです。の。このキャンセルが合理的かどうかは別として、解決策を見てみましょう。
rel属性
HTML4.0 では、新しい属性 rel が追加されています。この属性は、リンクとリンクを含むページとの関係、およびリンクのターゲットを記述するために使用されます。 rel には、次、前、章、セクションなどの多くの属性値があります。使用したいのは、rel="external" 属性です。元のコードは次のように書かれていました。
<a href="document.html" target="_blank"> 新しいウィンドウを開く</a>
今、それは次のように書かれます:
<a href="document.html" rel="external">新しいウィンドウを開く</a>
これは厳密な方法です。もちろん、効果を発揮するには JavaScript と組み合わせる必要があります。
JavaScript の完全なコード JS は次のとおりです。
関数 externallinks() {
if (!document.getElementsByTagName) が戻る;
var アンカー = document.getElementsByTagName("a");
for (var i=0; i<anchors.length; i++) {
var アンカー = アンカー[i];
if (anchor.getAttribute("href") &&
anchor.getAttribute("rel") == "外部")
アンカー.ターゲット = "_blank";
}
}
window.onload = 外部リンク;
これを .js ファイル (external.js など) として保存し、外部接続メソッドを通じて呼び出すことができます。
<script type="text/javascript" src="external.js"></script>
それでおしまい。
最後に、私の Web サイトで使用されている target="new" は移行 DOCTYPE では許可されていますが、厳密な基準を満たしていないことを付け加えておきます。次のリビジョンでは strict モードを使用し、すべての target="new" を rel="external" に変更する予定です。