2011年01月24日


JavaScript : Safari for Windows 5.0.3 の困ったバグとその対処方法 : alert、confirm でフォーカスがセットされていない。

Windows XP だけで起きていたり、環境によって違うかもしれませんが、
結構致命的で、Safari の為だけにコードを書かないといけないので困ります。
これは操作するほうが注意しないといけない内容ですが、対応したい場合は
setTimeout を使います。

10 ミリセカンド後でいいので、alert や confirm の処理を含んだ function
を setTimeout で呼び出す事で正しく動作します。これをしないと、表示している
メッセージボックスは、クリックしても一度目は反応しません。それでころか、1
度目にボタンをクリックすると、その後ろ側にある HTML に対して反応してしまい
ます。

かなり、致命的です

HTML のインラインで書く場合は、無名 function を使い、イベント用の文字列
はシングルクォートで表現するといいです。そうすると、プログラム出現率の高
い、ダブルクォートを心おきなく使えます。

※ シングルクォートが必要な場合は、' を使えます。
<input type="button" value="action" onclick='alert("I can&#39;t fly.")'>

<input type="button" value="action" onclick='

	setTimeout(function(){
		alert("I can&#39;t fly.")
	},10);

'>



posted by at 2011-01-24 15:28 | JavaScript | このブログの読者になる | 更新情報をチェックする