« テレビ修理 | トップページ | スキルなんて要求されてたまるか »

2007年2月22日 (木)

IE で target="_blank" 属性を無効にする

ローカルプロクシでフィルタリングするとか、いろいろ方法はあると思うが、俺はユーザスタイルシートから target 属性を無効にするスクリプトを仕込んでいる。

expression() > リンクのtargetを変更にあるのを少し修正したのを使わせてもらっている。

a:active, base {
  behavior: expression(
    (this.target == '_blank') && (this.target = '_top'),
    this.style.behavior = 'none'
  );
}

ただし IE 7 では base 要素の扱いが変わったので base 要素の target="_blank" 属性に対しては効果がない。IE 8 ではCSS expression 自体が使えなくなったので、互換表示時以外はまったく効果がない、と思ったのだが、どうやらそういうわけでもないようだ。IE 9 では完全に使えなくなっている。

なお、ユーザスタイルシートって何?という人はユーザースタイルシートのススメなどを見ること。

|

« テレビ修理 | トップページ | スキルなんて要求されてたまるか »

コメント

こんにちは。
IE7で使わせてもらおうとしましたが、「:active」は特に必要でなければ取り外したほうがよさそうです。いくつかのサイトでうまく動かなかったので…。
ユーザースタイルが最優先のはずだし挙動としては「:active」があってもなくても動いてしかるべきだと思うんですが、よーわかりません。とりあえず「:active」付きだと動かなかった例は、はてブのホットエントリページとか。拙作の「みなぎねチェッカ」とか。
http://knoa.jp/up/minagine.php
以上ご報告まで。

投稿: 幸之介 | 2008年5月 7日 (水) 08時07分

:active を付けた理由は、たしか負荷の軽減のためだったような気がします。:active を付けないとページを読み込むときに処理が集中して重くなったような。どうせリンクはそのページの中で一回しか起動しないから、リンクをクリックした瞬間にそのリンクだけ属性を変えればいいやと思ったんです。

が、確かにたまにうまく動かないんですよねぇ。自分はあまり気にしていなかったのでこれまでずっと放置してましたが(汗

投稿: まじかんと | 2008年5月 7日 (水) 22時33分

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: IE で target="_blank" 属性を無効にする:

» target=_blank問題にクライアント側で対処する [ナレッジエース]
target=_blankに関する議論 - 徒委記の内容が、なかなか興味深いです。 以前はユーザの意図に反して新しいウィンドウがぽこぽこ開のはよろしくないという考えが一般的でした... [続きを読む]

受信: 2007年3月31日 (土) 22時57分

« テレビ修理 | トップページ | スキルなんて要求されてたまるか »