• ベストアンサー

MacとWindowsのどちらでアクセスしたかによって実行させるJavaScriptを変えたいのですが

Flashで作成したswfファイルをhtmlファイルに埋め込んで、そのhtmlファイルのbodyは、topmargin=0,leftmargin=0とすることで、swfファイルをピッタリとウィンドウの左上にくっつくようにしました。 そしてさらに、そのhtmlファイル(main.html)は別のhtml(index.html)からswfファイルの縦と横の幅のサイズと同じ幅に指定された状態で、サブウィンドウとして開かれるようにしています。(newWin()サブルーチン) ところが、WindowsXPのInternetExproler6だとピッタリと収まって表示されるのに、マックOS9.2のInternetExprorel5だとswfファイルとサブウィンドウのサイズが揃わず、swfファイルとサブウィンドウの枠の間に隙間ができてしまいます。 そこで、考えたのは、JavaScriptにおいて、訪問者のPCがマックかウィンドウズによって、実行させるサブウィンドウを開くサブルーチンの処理内容をOSに合わせて変更するということができないかということです。 Flashのswfのサイズは780*478なので、以下のようなスクリプトを現在は使用しています。 <script Language="JavaScript"><!-- function newWin(){ wx=780; wy=468; x=(screen.width-wx)/2; y=(screen.height-wy)/2; window.open("main.html","sub","left="+x+",top="+y+",width="+wx+",height="+wy); } //--></script> 上記はWindowsだと正常にモニタ画面中央にサブウィンドウがswfファイルをピタリと収めて表示されますが、Macだとモニタ画面中央に表示されても、swfがサブウィンドウのサイズより小さいために、なぜかサブウィンドウ内に余白が発生してしまっています。 そこでマックの場合だけは、wx=760 wy=450ぐらいにしたいと思うのですが、そういったOSに依存した処理の選択は可能でしょうか。 またこのズレが生じた原因もお分かりになれば一緒にアドバイスをお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#199778
noname#199778
回答No.2

JavaScriptでのOSの判別法だけ… JavaScriptでは、ナビゲーターオブジェクトのブラウザのバージョンやユーザーエージェント、プラットフォームの情報の中にOSに関する情報が含まれていると思います。 navigator.appVersionプロパティは、ブラウザのバージョンを持っています。 ブラウザによって、この値で返す値が違いますので、適切にOSの情報が取れないこともあるかもしれません。 navigator.userAgentプロパティは、HTTPヘッダに含まれるユーザーエージェントを持っています。 ユーザーエージェントにはOSの情報も含まれているので、これでOSの判別をすることもできます。 navigator.platformプロパティは、そのマシンのタイプについての情報をもっています。 Windows系であれば「Win32」を、Macであれば「MacPPC」などの値を返すそうなので、これでOSを判定することもできると思います。 具体的な方法については、検索サイトで「OS判別 JavaScript」をキーにして検索すれば、たくさん引っかかるページがあるので、そちらも参考になると思います。 参考までに…

shevy
質問者

お礼

ありがとうございます。 非常に参考になりました。 早速試行錯誤して試してみようと思います。 ありがとうございました。

その他の回答 (1)

  • jakarta
  • ベストアンサー率38% (607/1597)
回答No.1

多少ステージからはみ出した塗りたし部分をつくっておきmain.htmlを介さず直接javascriptからSWFを表示させるという方法もあります。 そうするとウインドウに追従してSWFの表示内容が拡大縮小します。 みくらべてもらうとわかると思いますがステージサイズちょうどで作成すると縦横比が変化したときに塗りたし部分がないため白場ができます。 サイズを絶対固定にしておきたいのであればindex.htmlのJavascriptの呼び出しから開くhtmlは単一のフレームにしておきスクロール表示がしないように設定し、main.htmlを呼び込ますという方法も考えられます。 こういった方法はウインドウ右端にスクロールバーの表示部分を強制的に用意してしまうNN4.7用の対策としても有効です。 OS別、かつブラウザ別に処理を振り分けることも可能ですが非常に面倒です。

shevy
質問者

お礼

ありがとうございます。 非常に参考になりました。 ブラウザによる違いなど、もっと考えて意識しようと思います。 ありがとうございました。

関連するQ&A