Leopardにアップグレードしたことで、Safariが3.0になり、JavaScriptの挙動などにいくつか変化がありました。
大きなところは
http://webkit.org/blog/122/webkit-3-10-new-things/
に描いてある通りなんですが、マイナーな変更点で、気づいたところをいくつか。
イベントのマウス座標
onmousedownなどで渡されるEventのクラス変数 clientX, clientYが、従来はスクロール位置に関わらずページの左上を原点とした座標が入っていましたが、仕様通りのウィンドウに表示されている部分の左上が原点になりました。従って、ページ内のマウス位置は
function move(e) { e = e || event; x = e.clientX + document.body.scrollLeft; y = e.clientY + document.body.scrollTop; ... } document.onmousemove = move;
などとしてとることになります。従来Safariを判別して場合分けしていたケースでは、navigator.userAgent等を見てバージョンも判別が必要かもしれません。
重いスクリプトの停止
無限ループするようなJavaScriptを動かすと、一定時間後に、JavaScriptのせいで反応が止まっているが中止するか?ときいてくるようになりました。
画像ファイルなど、HTML以外のページに対してJavaScriptが実行可能になった
これまでBookmarkletなども画像のみを表示しているときには動きませんでしたが、Safari 3ではちゃんと動きます。
ボタン色の反映
JavaScriptではありませんが、ボタンの背景色などの色が反映されるようになりました。