_blankを使わないで別ウィンドウを開く

2007/05/28 月曜日 19:10 投稿者 zon

個人的に別ウィンドウを開かせるようなリンクの張り方はほとんどしないのですが、たまにどうしても別ウィンドウで開いて貰いたい場合があります(PDFデータのダウンロードページとか、そのページからリンクが張れなくて、行き止まりになってしまう場合とか)。

でも、_blankは XHTML 1.1 では廃止されたとか、HTML4.01とXHTML1.0で非推奨だとか、そういった感じのイメージだけはなんとなくあって、今は基本的にほとんどが XHTML1.0 で書いているので良くはなくてもダメではないという感じなので、使ってもいいかとも思うのですが、将来的に XHTML 1.1 とかにしていくときに修正するのが大変なので、軽く調べて以下を参考にすることにしました。

_blankを使わないで別ウィンドウを開くにはrel=”external”を使うのが美しいと思う。

_blank 使わない別ウィンドウを開く方法

コメント欄を見るといろいろと議論されていて、この記事の内容から修正されている点もありますが、特にガチガチに XHTML に準拠した形にしたいわけでもないので、とりあえずは、a タグに class="extarnal" を指定して、JavaScriptで anchor.target = "_blank"; にすることにしました。

rel="extarnal" にしなかった理由は、WordPress のコア部分の auther 関連が既に class="extarnal" を指定していたからです。コア部分に手をつけるのはあまりしたくないし。

それなら external じゃなくて、別の名前にすればよかったのですがもう一つ理由があって、上記の記事のコメント欄を読んでいると、rel="external" は非準拠だどうだといった議論があったりして、詳しく調べるのも面倒なので、無難に class にしておくことにしました。ついでに rel属性の準拠、非準拠の話の中で、(X)HTML仕様に定められていないリンクタイプを記述するときは、プロファイルをhead要素で指定しないといけないといったことが書かれていました。

headタグの profile要素の指定について

プロファイルとか言われても、あまり意味が分からないので、とにかく参考にされている以下のリンク先などをざっと読んで rel="nofollow" を使う場合もプロファイルを指定しておく必要があるとありました。

rel="nofollow" ほかメタデータのプロファイル

WordPress のプロファイルは既に、XFNを使っていますが、このプロファイルが、どうも複数指定は出来ないようで、XFN をとるか XHTML metainformation profile 二者択一になってしまうので、XHTML metainformation profile を採用することにしました。幸い XFN は、指定するのが面倒で、全く使っていなかったし。

ソースコードは、<head profile="http://gmpg.org/xfn/11"> を <head profile="http://purl.org/net/ns/metaprof"> に変更すればOKのはず。

WP 未来投稿(予約投稿)のテスト・続

2007/05/15 火曜日 10:30 投稿者 zon

この件はWP 未来投稿(予約投稿)の注意点で、問題なかったのでいったんクローズしたんですが、このブログの環境では問題なかったものの、実際に問題が発生したブログの方では、やはり未来投稿(予約投稿)が出来ない症状が続いています。ここのところ忙しかったので見てみぬフリをしていたのですが、やはり不便なのでもう一度調査します。

症状が発生している方との違いを調査するのにこのブログのデータを取るための記事なので、内容のある記事ではありません。原因が特定できた場合は追記を書くと思います。

調査結果追記(2007/05/15)

未来投稿が反映されない原因はソケット接続オープン時のタイムアウトでした。
/wp-includes/cron.php の 87行目(Ver 2.1.3)の fsockopen タイムアウトが 0.01 に設定されていて、$errstr に Connection timed out を返していました。タイムアウト時間を長めにとれば大丈夫かと思います。

未来投稿が反映されなくて困っているけど、難しいことが分からないという人は、下記の部分の 0.01 の部分を 0.1 にしてみると問題が解決する場合があるかもしれません。

$argyle = @ fsockopen( $parts['host'], $_SERVER['SERVER_PORT'], $errno, $errstr, 0.01 );

一応、他にも短すぎるタイムアウトが設定されていないか fsockopen で水平展開してみましたが問題になりそうなところはありませんでした。

確か、以前もVer 2.0系でタイムアウトが原因の問題で悩んだことがありました。(詳しく覚えてないけどトラックバック関連だったような気がします。)メモしておいたんですが、サーバトラブルでバックアップデータを復旧せずそのままに状態で放置してたのですっかり忘れてました。これからはちゃんとメモをしておこう。

zontheworld HTML convert time: 0.069 sec. ( Login )