_blankを使わないで別ウィンドウを開くにはrel="external"を使うのが美しいと思う。sidebarblog.hori-uchi.com2006年3月15日水曜日_blankを使わないで別ウィンドウを開くにはrel="external"を使うのが美しいと思う。はてなブックマークをみていたら、気になるエントリーを発見。Basicに準拠していないので、これらに準拠するようにしつつ、別ウィンドウで開くにはどうすればよいかという話です。別ウィンドウで開くにはJavaScriptを使えってのが推奨される方法なんですが、onclickを使って定義するのはめんどうということで、この記事では、aタグにclass="popup"という属性を与えておけば、JavaScriptで別ウィンドウを開くということをしています。この件については友人のHTML、CSSマスターなkawachi君と話したことがあって、そのときは、下のエントリで紹介されているrel="external"という方法を使うのがいいんじゃないかという結論に達しました。way僕は上のエントリを参考に以下のようなjsファイルを用意して使っています。false);<使い方は簡単でこのjsファイルをインクルードするだけです。src="/path/to/external.js"></script><load時にこのファンクションを実行するためにprototype.jsのEvent.observeを使っているため、prototype.jsもインクルードしています。ここはwindow.onload=externalLinks;に書き換えれば、prototype.jsは必要ありません。このファイルをインクルードすると、rel="external"と指定したaタグをクリックすると別ウィンドウで開くようになります。href="http://www.google.com/">別ウィンドウで開きます。</a><rel="external"というこのリンク先は外部のサイトだよという関連性を示す記述に対して、JavaScriptで別ウィンドウで開くんだよと定義してあげるというアプローチが美しいなと思っています。Basicに準拠していないような気がしてきました。5:21で、実装非準拠のマークアップを濫造すると、なにが楽しいのでしょう。9:04rel="external"って準拠した書き方だと思っていましたが、もしかして非準拠??ちょっと調べたら、HTML4.0だとrel属性に指定できる値って決められてるんですね。根本からして間違い??それと別ウィンドウで開くためにrel="external"と使うというのは順序が逆で間違いだなと思いました。9:44実情はともかく、rel属性に(X)HTML仕様で定められていないリンクタイプを記述するときは、プロファイルをhead要素で指定することになっています。18:51Yuanyingさん、情報ありがとうございます。プロファイルをhead要素で指定するという方法、知りませんでした。rel="nofollow"ってのもプロファイルを指定しないと厳密には、間違いなんですね。10:47コメントに静的なhtmlファイルが準拠していれば良いのかという指摘がありますが、文法に準拠したHTMLを書きあくまでDOMを使ってUAの読み込み時に汚すことと、端から汚れたHTMLを書くこととは同価ではないはずなので、僕は「相応の理由があれば」OKだと思います。cornerを例にすると、border-radiusプロパティが実装されるまでの過渡的な手段として用いるという分には一理あります。今回の_blankにしてもDOMで追加するほうがあとで簡単にウインドウ開くのをやめられるというメリットがあることも確かなわけで、その辺は最終的にHTMLが汚れることとのバランスをみて採用すれば別に良いのではないかと思います。リンク先の記事の場合、class名にpopupという名前を付けており、そんな一部のUAの機能に依存したクラス名を付けちゃうんだったら意味ないじゃんとは思いますが。それと、ちょっと話が逸れますが、新規ウインドウで開く場合には、「新規ウインドウで開きます」と書いちゃうとか、それが冗長ならそれっぽいアイコンを添えてみるとか、技術面よりもユーザーの利便性に目を向けたほうが良いというか、サービスを考える上では面白いのではないかとか、そういう風なこと考えたりしました。10:54追加で補足です。Transitionalを採用した上で、DOMを使いtarget属性を追加するのが良いのではないかと思います。10:34はじめまして、horiuchi様。ふるぱ-しゃる管理人、秋月らせんと申します。aタグでrel="external、は目から鱗でした。拙サイトでの長らくの悩みに巧妙が見えました。html内で明示的に_blankと書いてしまうのはstrictうんぬんを抜きにして好ましくないと思っていましたがさりとて、別窓表示したほうが管理人としてもおそらく閲覧者さまの視点からしても良いのじゃないか、と思う事があったのも事実です。「W3C向けの小手先の逃げ」ではなくて、美しい手法だと思います。理由はソース中に明示的に外部リンクだと示している事、アレコレ直接aタグ中にjavaのイベントを書かなくて済むのが素晴らしいです。今後、aタグクリック時の仕様変更を行いたい!と思った時に容易に実現出来る(しかもhtmlソースのリビルドは不要)も素晴らしいです。スクリプトを利用させていただいた事のご報告と感謝を述べさせていただきます。1:59rel="external"をつけるだけでは、別ウィンドウで開きません。javascriptを使ってページをロードした際に、rel属性がexternalのa要素を拾ってきて、targetを_blankにセットしているんです。rel="external"とnofollowは無関係です。3:20スクリプト拝見しました。参考にさせて頂いてます。21:03すみません質問させてください。ver7.0.5730.11なのですが、タブブラウザで閲覧すると問題無く別ウィンドウで表示されるのですが、ie7で閲覧すると別ウィンドウで開くのですが、元ページも別ウィンドウと同じページに移動してしまいます。way)のリンクでも同じ事が起きてしまいます。21:03すみません質問させてください。ver7.0.5730.11なのですが、タブブラウザで閲覧すると問題無く別ウィンドウで表示されるのですが、ie7で閲覧すると別ウィンドウで開くのですが、元ページも別ウィンドウと同じページに移動してしまいます。way)のリンクでも同じ事が起きてしまいます。Sledgeのバリデ...Template::Plugin::Encode_blankを使わないで別ウィンドウを開くにはrel="external"を使うのが美しいと思う。0.08FormValidator::Simple::ProfileManager::YAMLSledgeのValidatorを作ろうと決意するにいたったわけSledgeでUTF8なサイトを作る。