_blank 新しいウィンドウを開くと標準に準拠していません?_CSS/HTML

WBOY
リリース: 2016-05-16 12:12:20
オリジナル
1548 人が閲覧しました

この記事は次の記事を参照しています:

新しいウィンドウでリンクを開く通常の方法は、リンクの後に target="_blank" を追加することです。transitional DOCTYPE (xh tml1-transitional.dtd) を使用する場合は問題ありません。 strict DOCTYPE (xhtml1-strict.dtd) の場合、このメソッドは W3C 検証に失敗し、次のエラー メッセージが表示されます:

「(この HTML バージョンでは) この要素には属性 target がありません」

HTML4.01/XHTML1.0/XHTML1.1 の厳密な DOCTYPE では、target="_blank"、target="_self" およびその他の構文は無効であり、JavaScript を介してのみ実装できることが判明しました。

友人から、なぜ target="_blank" が使用できないのかと尋ねられました。この属性は非常に便利です。あはは、W3C の専門家がどう考えているかは知りませんが、私の知る限り、これは主に「使いやすさと親しみやすさ」に関するものです。外国人は、ユーザーの同意や明確なプロンプトなしに新しいウィンドウを開くことは失礼だと考えているからです。の。このキャンセルが合理的かどうかは別として、解決策を見てみましょう。

rel 属性

HTML4.0 では、rel という新しい属性が追加されています。この属性は、リンクとリンクを含むページとの関係、およびリンクのターゲットを記述するために使用されます。 rel には、次、前、章、セクションなどの多くの属性値があります。使用したいのは、rel="external" 属性です。元のコードは次のように書かれていました:

新しいウィンドウを開く

次のように記述します。

新しいウィンドウを開く

厳格な規格に準拠した工法です。もちろん、効果を発揮するには JavaScript と組み合わせる必要があります。

JavaScript

完全なコード JS は次のとおりです:

function externallinks() { 
 if (!document.getElementsByTagName) return; 
 var anchors = document.getElementsByTagName("a"); 
 for (var i=0; i<anchors.length; i++) { 
  var anchor = anchors[i]; 
  if (anchor.getAttribute("href") && 
    anchor.getAttribute("rel") == "external") 
   anchor.target = "_blank"; 
 } 
} 
window.onload = externallinks;
ログイン後にコピー

これを .js ファイル (external.js など) として保存し、外部接続メソッドを通じて呼び出すことができます:

それだけです。

最後に、私の Web サイトで使用されている target="new" は、暫定的な DOCTYPE の下で許可されていますが、厳密な基準を満たしていません。次のリビジョンでは strict モードを使用し、すべての target="new" を rel="external" に変更する予定です。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート