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分