DTDチェッカーなどで文句言われないように、別窓で開くのを
<a href="http://www.example.com/" onclick="window.open('http://www.example.com/','_blank'); return false;" onkeypress="window.open('http://www.example.com/','_blank'); return false;">example</a>
という風にしています。
FireFOXの場合、基本、新しいタブで開いてくれるんですが、
たまに、新規の窓になって、スクロールバーやツールバーなどが消えることがあります。
これを防ぐにはどうすればいいでしょうか?
文法チェッカーなどが問題にしてるのはtarget="_blank"を使うことでなく新しいウインドウを開くことそのものなわけでそういう風にして警告を回避するのは意味がないです。もしどうしても新しいウインドウで開かなければならないと言うのなら素直にtarget="_blank"を使ったほうが良いんじゃないかと思いますよ。例え非推奨属性であったとしてもね。
http://www.mozilla-japan.org/support/firefox/faq#spell-abbreviat...
FirefoxをFireFOXと書いてるのも多少気になるし、JavaScriptで新規ウインドウを開こうとするやつは設定次第で挙動変わるんじゃないかなと思ったりもします。toolbar=yes云々などを指定しても多分変わらないような気が…。
事情を把握した上でしばらく考えてみましたが、単純に<a href="hoge" target="_blank">hoge</a>をJavaScriptで吐かせてスクリプトが無効であれば<noscript>に書かれたtargetを使わないタグを使わせるってのはダメでしょうか。とりあえず文法チェッカの警告はスルーできると思うんですが。
もしも単純な仕掛けがばれて困るようなときは出力する文字をスクリプトに記述するときエスケープしておけば素人には解読出来ないだろうと思います(笑)
http://homepage3.nifty.com/chado/playjs/mojicode/mojicode_area.h...
<script type="text/javascript"> <!-- // 長いとみづらいのでここでは分割していますが、つなげても差し支えありません。 document.write('\x3C\x61\x20\x68\x72\x65\x66\x3D\x22\x68\x74\x74\x70\x3A\x2F\x2F'); document.write('\x77\x77\x77\x2E\x68\x61\x74\x65\x6E\x61\x2E\x6E\x65\x2E\x6A\x70\x22'); document.write('\x74\x61\x72\x67\x65\x74\x3D\x22\x5F\x62\x6C\x61\x6E\x6B\x22\x3E'); document.write('\u306F\u3066\u306A\x3C\x2F\x61\x3E'); //--> </script> <noscript> <a href="http://www.hatena.ne.jp/">はてな</a> </noscript>
例えば上記スクリプトを実行すると下記のHTMLが出力されます。
<a href="http://www.hatena.ne.jp/" target="_blank">はてな</a>
※とりあえず分かれば良いので事例ではstrictとか何とか無視してます。
なるほど。
この考えは思いつきませんでした。
灯台もと暗しというか、盲点でした。
ありがとうございます。
window.open に3番目の引数をつけていませんか?
window.open の3番目の引数で各種オプションパラメータを指定していると、そのような現象になってしまいます。
余談ですが、window.open('http://www.example.com/', ~) の部分は window.open(this.href, ~) とすると同じ URL を3回書かずに済んで少しすっきりするのでお奨めです。
個人的には Marine-Blue さんの考えに賛同します。
チェッカーで100点を求めているのが顧客なのであれば、別窓を開くこと自体が良くないということも説明すればわかってもらえるのではないかなと思いますが、趣旨を理解する気はないけどとりあえず100点じゃなきゃダメだと盲目的になってしまっている顧客なのでしょうか…
ありがとうございます。
新しいウィンドウ自体がだめなのは知っているんですが、
お客様に説明しても、納得してもらえない&チェッカーで100点を求められる時代なので、
制作側としては、嫌々ながら、お客様の要望に答えないといけなかったりするので、
大変ですよね。
それを知った上で、この質問を投げているのですが、
私に、お客様に納得してもらうだけの力が足りず、つらい感じです。
以降、背景云々別にして、技術的にお答えをお願いいたします。
ちなみに、FireFOXは、ATOKの自動日本語英語の変換で打っちゃったので、おかしくなっちゃいました。