jQueryがSafari1系(MacOSX10.3)でいよいよ動かなくなった件

いま作り途中のページの動作確認で、jQueryとMaxOSX10.3標準のSafari1系との相性問題が改めて出てきてしまったので、一応メモメモ。

以下、jQueryの最近のバージョンとSafari1系(1.3.2 / v312.6)との相性比較

  • jQuery 1.2.3 …… 動く
  • jQuery 1.2.5 …… そこそこ動く Safari1が落ちる
  • jQuery 1.2.6 …… Safari1が落ちる
  • jQuery 1.3.1 …… スクリプトが動作しない

Safari1を動作対象に入れている方、GoogleCodeのAJAX Libraries APIにて google.load("jquery", "1"); と設定している方、十分ご注意ください。
(後者の件、この設定だと1.3.1がロードされます。Safari1系で使うなら google.load("jquery", "1.2.3"); というようにversionsの決め打ちが必要)


Google翻訳、おまえもか

さっき気づいたのですが、MacOSX10.3に入っているSafari1系でGoogle翻訳を開くと、確実に落ちます。
多分Googleマップと似たようなことかと。→[MacOSX10.3のSafariでGoogleMapを表示すると落ちる件

対策:

  1. Safari以外のブラウザで閲覧する。CaminoいいよCamino
  2. OSのバージョンアップ

OSのバージョンアップが禁止されてるマシンとか検証機とかロートル機向けに、旧バージョンのMacOSXを一定の期間だけ並行的に売ってほしいなぁ……。Windowsみたいに。


MacOSX10.3のSafariでGoogleMapを表示すると落ちる件

最近気づいたのですが、MacOSX10.3(Panther)に同梱されているSafari(いわゆるSafari1系。1系の最新は1.3.2かな?)でGoogleMapを表示させると、確実に落ちます。
これは本家だけでなく他所のサイトでも、iframeでGoogleMapを貼付けるとそのページで落ちてしまいます。

原因はわりと単純で、Safari1で手に負えないJavaScriptコードが入っていること。
非対応なのかSafari1のみで発生するバグなのかは分からんのですが、この現象はjQueryと一部のプラグインとの組み合わせでも発生するのを確認しているので(というかsafari1系ではまるで動かないプラグインがだいぶ増えてきています)、つまるところ、MacOSX10.3の人はぼちぼち10.4以降にアップグレードした方がよいかもね、というオチでした。

悩ましいことに、現在リリース中のWebkitは10.3でインストール出来ません。昔のは出来るのかな……?

追記:080320

Googleマップのトラブルシューティングにて、公式サポートから以下の書き込みが。

現在 Google マップでは Safari 2.0.4+ をサポートしています。

それは急に起こった – トラブルシューティング/ブラウザの情報 | Google グループ

で、日本語のヘルプセンターでの記述では「Safari 1.2.4以降」ですが、英語版では「Safari 2.0.4+」となってます。日本語版の更新がまだみたいで。はよせい。

Google Maps currently supports the following web browsers:

  • IE 6.0+ (download: Windows)
  • Firefox 1.5+ (download: Windows Mac Linux)
  • Safari 2.0.4+ (download: Mac)

Which web browsers does Google Maps support? – Google Maps Help Center

公式に、Safari1系はサポート外になりました orz


ソフトウェアアップデートで更新されたSafari3がなかなか良い件

MacOSX 10.4.11のアップデートで、うちのSafariが3になってました。
見た目そんなに変わってないように見えますが、これがなかなか良い。
特に、ロースペックマシンでの表示速度が3割ほど早くなっているような印象。全体的な動作がますますキビキビしてます。

大きく違いを感じられるのがJavaScriptの実行速度で、script.aculo.usとか、Interface elements for jQueryjQuery UIのアコーディオンエフェクトとかが、ロースペックマシンでもさくさく動くようになってます。
OSX10.3の頃(Safari1系)なんかカクカクしてたし、10.4(Safari2系)でもうちのマシンだと動作にひっかかりがあったりと微妙だったので、これは密かにすごいです。
つーか、10.3の頃に見たjQuery UIなんて、重すぎて使えねーぞコラー!とか思ってたんですが、前言撤回せざるを得ない。これでintelMacだったら至極快適なレンダリングになってる予感。

なんか、うちのCubeでもあと2年はやってゆけそうな気がしてきた(笑) ヽ(´▽`)ノ


jQuery1.1.4リリース

先日の懸念事項だったSafari1系との相性問題も解決しましたヽ(´▽`)ノ
1.1.3を使用しているサイトは早急にアップグレードしましょう。


jQuery1.1.3系とSafari1系の相性が悪い件

調子こいてjQuery使ってオモシレーとか遊んでいるときに気づいたのですが、jQueryのLatestバージョンである1.1.3.1をMacOSX 10.3同梱のSafari(Latestは1.3.2)で読み込むと、100%落ちます。

一例を挙げると「2くらべ」とか。ここも現在のLatestバージョンを使用しているので、MacOSX10.3のSafariだと落ちます。

ちなみにMacOSX 10.4に同梱のSafari2系では大丈夫。どちらかというとSafari1系がタコなのですが、まだ結構MacOSX 10.3ユーザがいるので、Safariをターゲットブラウザにしているサイトは要注意です。
どーしても10.3のSafariをフォローしたい場合は、 Downloading jQuery – Past Releasesにある1.1.2を使用しましょう。これならどのSafariでも大丈夫。

これはもう、はやいとこMacOSX10.4にしておけということなんでしょうか(;´Д`)

■ 追記070828

1.1.4では良い塩梅になってましたヽ(´▽`)ノ


050311 :: Firefoxとwindow.close()(再掲)

※以下は旧ネタ帳の記事を再掲したものです。
検証して頂いた方、特にtakashiさん、ありがとうございます!ヽ(´▽`)ノ

今現在のFirefoxでは、takashiさん謹製のスクリプトでも無効になってしまいました。残念……。セキュリティポリシー上仕方ないようです。

追記090828:「close.html」が長い事消えてました(;´Д`) 参照できる状態に戻しました。

−−−−−−−−−−−−−−−−−−−−

041217の備忘録にて、Firefoxで window.close() が利かなくなる事例を紹介しましたが、そのコメント「ちゃんと閉じてくれた」というのがずーっと気になってたので、少し違う事を試してみました。
多分Mozilla本家でとうに挙げられていると思うのですが、英文が分からないので調べてません(ぇー

● _blankで開く場合

ということで、[こちら]をクリックして開いたページの「ウィンドウを閉じる」をクリックしてみてください。多分閉じます。
ちなみに、設定上タブで開くようになっていると閉じるのですが、自らタブで開くと閉じないようです。扱いが違う模様

●イチから開いてみる

下のURLをコピーし、新しいウィンドウを開いてアドレス欄にペーストしアクセス、表示されたページの「ウィンドウを閉じる」をクリックしてみてください。多分閉じません。
https://www.textbox.jp/close.html

ちうことで、Firefoxで window.close() を機能させるためには、閉じたいウィンドウを、あらかじめ別のページから[_blank]で開くかJavaScriptでポップアップを出すのが良いということらしい。

前回の例できちんと閉じた方は、どこかのリンクから別ウィンドウで開いたのだろうと勝手に推測してみます。

−−−−−−−−−−−−−−−−−−−−

※以下は当時のコメント。

windows.close

お初におめにかかります。takazooと申します。
googleでfirefoxとwindow.closeで飛んできました。

window.closeについてですが。

呼び出し元のソースで
window.open(address);

として開いて、開いた先のjavascriptでWindow.closeを行うとfirefox自体が確実に落ちますね。

[ takazoo ] 2005/03/15 (Tue) 11:19:14

うーん……

Mac版Firefox1.0とWin版0.8・1.0.1で確認して、特に問題はありませんでした。
使用環境や落ちてしまうHTMLソースは分かりますか?

[ くらこむ ] 2005/03/15 (Tue) 17:46:48

window.close

お返事ありがとうございます。

どうやらinit時にwindow.closeを行うと落ちるようです。

なぜ開いたwindowでinitする必要があるかといいますと、
現在ファイルアップロードのフォームをwindow.openで開いた先でおこなっているのですが、
そこでファイルアップロードが完了した場合(ページ更新時)に
自分のページが再度読まれた時にinitでwindow.closeしています。
IEではおちるような事はないのですが、firefoxは1.0のRCの時からずっと残っているバグ(?)のようです。

[ takazoo ] 2005/03/16 (Wed) 07:01:21

失礼しました。
init時というよりは、bodyのonLoad時ですね。

[ takazoo ] 2005/03/16 (Wed) 07:02:21

サンプル作ってみました。

閉じるまでの時間を設けると上手く行くかもしれません。

下記アドレスからサンプルを呼び出してみてください。
http://neta.tbx.jp/close_sample0.html

[ページ2]に setTimeout(“window.close()”,3000); を入れて、3秒後に閉じるようにしています。
Safariでは閉じてくれないので、別途[閉じる]ボタンを加える必要があります。

[ くらこむ ] 2005/03/16 (Wed) 17:39:48

動作できました

くらこむさん

ご教授いただいた通りsetTimeoutでいけました。
このバグさえなければ、、、、とずっと思っていたのが解決できました。

わざわざサンプルのページまで作成して頂きまして本当にありがとうございました。

[ takazoo ] 2005/03/18 (Fri) 04:40:38

どもども

このへんの挙動はブラウザのポリシーの違いかもしれません。
onLoadと同時にwindow.closeが許可されるのは忌避すべき挙動です。

[ くらこむ ] 2005/03/18 (Fri) 06:07:23

closeできました。

はじめまして、takashiと申します。
Netscapeでclose()ができないのをgoogleで検索してたらたどり着きました。
いろいろ調べて試行錯誤した結果、解決策がわかりましたので、ご参考になればと思い書き込ませていただきました。
以下のようにすれば、IEでは警告ダイアログ無し、Netscape/Firefoxでもclose()できました。

= 0){
if(nvua.indexOf(‘MSIE 5.0’) == -1) {
top.opener = ”;
}
}
else if(nvua.indexOf(‘Gecko’) >= 0){
top.name = ‘CLOSE_WINDOW’;
wid = window.open(”,’CLOSE_WINDOW’);
}
top.close();
}
//–>

closeサンプル

ウィンドウを閉じる

以上です。

[ takashi ] 2005/08/23 (Tue) 12:46:56

ごめんなさい。

すいません、HTMLソースそのまま貼り付けたらわけ分からなくなりました;;
肝のところだけもう一回・・・。

function close_win(){
var nvua = navigator.userAgent;
if(nvua.indexOf('MSIE') >= 0){
if(nvua.indexOf('MSIE 5.0') == -1) {
top.opener = '';
}
}
else if(nvua.indexOf('Gecko') >= 0){
top.name = 'CLOSE_WINDOW';
wid = window.open('','CLOSE_WINDOW');
}
top.close();
}

[ takashi ] 2005/08/23 (Tue) 12:49:38

お初です。

Google検索から飛んできました。
Firefox 1.5にしてからwindow.close()が落ちるようになりました。
どうも相性の悪い拡張機能があるようです。

[ kazu ] 2006/01/01 (Sun) 08:38:42

解決しました

takashiさま
すごく困っていたのですがコードをコピって使ったら解決しました。
感謝です!!!!!!

[ ali ] 2006/04/07 (Fri) 20:15:45