javascriptを書いていてIE8では動かないコード(バグ?)に遭遇しました。
調べてみたところ、Dateオブジェクトがうまく作成できていないようでした。
問題のコードはこちら。
var dt = new Date(“2011-01-23”);
alert(dt.getTime());
IE9でチェックしていたから気が付かなかったけど、IE8だとNaNになる…。
var dt = new Date(“2011/01/23”);
こちらではOK。
やはり、実際にブラウザでちゃんと試さないとだめですね。
window.openerを使えば親ページを簡単にハンドルすることができますが、親子関係のないページをハンドルする場合はどうすればよいか…。
少し悩んだのですが、下記のページに解答がありました。
http://chaichan.web.infoseek.co.jp/qa5500/qa5806.htm
要するに
ウィンドウAのjavascriptで
[javascript]
window.name = “window_a”;
[/javascript]
と自windowsの名前を定義
ウィンドウBからは
[JavaScript]
var window_a = window.open(“”, “window_a”);
[/JavaScript]
とすれば、ウィンドウAにアクセスできる。
以下の、フォーム送信の簡単なコードが動かないでしばらく悩んだのでメモ。
[JavaScript]
<script>
function dosubmit()
{
var form = document.getElementById(‘form1’);
form.submit();
}
</script>
<form id=”form1″>
<input type=”text” name=”text1″ />
<input type=”submit” name=”submit” value=”送信” />
</form>
<a href=”#” onclick=”dosubmit();return false;”>送信テスト</a>
(このリンクが動かない…。もちろんJavaScriptオンでも)
[/JavaScript]
なぜ動かないかわかりますか。
答えは、
<input type="submit" name="submit" value="送信" />
の 「name=”submit”」の部分。
これで form.submit が上書きされてしまうため送信ができないのでした。
やっぱりJavaScriptは嫌いだ。
あるdiv要素を中央寄せにしようとして、ちょっと悩んだので忘れないようメモします。
<style> div#a { width:100%; text-align:center; } div#b { width:100px; border:1px solid #333; } </style> <div id="a"> <div id="b">text</div> </div>
これは、IEだと正しく中央寄せされるのに、Firefoxでは中央寄せされない。
なんでかな~と調べてみたら、FireFoxの場合は子要素の側でも、親要素の余白指定を使うかどうかをmarginで指定してあげないと思ったとおりの表示にならない。
そこで、styleタグの中に以下を追加する。
div#b {
width:100px;
border:1px solid #333;
margin-left:auto;
margin-right:auto;
}
これで期待通り中央寄せ表示される。