Valid XHTMLにしつつ新しいウインドウを開く

試験期間中なのにJavaScriptでつまらぬものを作ってしまった…。

HylosではXHTML 1.0に準拠するように厳格な規格を守っていたりしますが
それだと新しいウインドウを開くことができません。

何故かというとaタグのtarget属性が認められていないためです。
target=”_blank”と書けばその時点でXHTML非準拠になります。
XHTMLでウインドウ操作は認められないということらしいです。

そうなるとリンク先を新しいウインドウで開きたい場合、手近な方法ではJavaScriptを使うくらいしかなくなります。

そこで先人の方々が色々高度なスクリプトを書いていらっしゃるのですが、
私はHylosドメイン外のリンク先は基本的に新しいウインドウで開いてもいいかなと思ったので
超簡易版を書いてみました。

<script type="text/javascript">
<!–
var anchors = document.getElementsByTagName(‘a’);
for(var i=0;i<anchors.length;i++){
var anchor = anchors[i];
if(anchor.getAttribute(‘href’)){
if((anchor.getAttribute(‘class’) || anchor.getAttribute(‘className’)) != ‘highslide’){
if(anchor.href.indexOf(‘hylos.info’) == ‘-1’){
anchor.onclick=function(){window.open(this);return false;};
}}}}
//–>
</script>

上記の内、一箇所だけhylos.infoとありますが、ここに新しいウインドウで開かなくてもいいリンク先に含まれるドメインとか入れておきます。

それと、これは関数になっていないのでbodyの最後に書いておく必要があります。
HylosではWordPressのガジェットの右カラムの一番下にテキストガジェットで置いておくだけで動作しました。
現在動作中なのでソースなどご覧下さい。

あとこのスクリプトはHylos用に作ったのでHighslide用のaタグはクラス名を見て避けるようにしてあります。

このスクリプトがページの最後に一箇所あるだけで、ページ内の全てのaタグのうちHighslideとHylos内ページ以外が新しいウインドウで開くようになります。target属性は必要ありません。

…やっぱり関数に書いて呼び出すなりしてスイッチできるようにしたほうがいいかな…。

You may also like...

3 Responses

  1. yasushi より:

    XHTML 1.0 Strictの際のtargetに変わる方法を探していて辿りつきました。
    上記に記載されているスクリプトのライセンスはどの様なライセンスにでしょうか?

  2. Mulgray より:

    ありがとうございます。

    同じようなコードを考案されている方は多くいらっしゃる様なのですが、特にライセンスが主張されたことはないようなので、私の所でも特にライセンスは主張しません。
    よってフリーということで、改変など含めご自由にお使い下さい。

  3. yasushi より:

    お忙しい中ご回答頂きありがとうございます。
    ではお言葉に甘え利用させて頂きます。

    この度はありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。