- ベストアンサー
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に依存した処理の選択は可能でしょうか。 またこのズレが生じた原因もお分かりになれば一緒にアドバイスをお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
JavaScriptでのOSの判別法だけ… JavaScriptでは、ナビゲーターオブジェクトのブラウザのバージョンやユーザーエージェント、プラットフォームの情報の中にOSに関する情報が含まれていると思います。 navigator.appVersionプロパティは、ブラウザのバージョンを持っています。 ブラウザによって、この値で返す値が違いますので、適切にOSの情報が取れないこともあるかもしれません。 navigator.userAgentプロパティは、HTTPヘッダに含まれるユーザーエージェントを持っています。 ユーザーエージェントにはOSの情報も含まれているので、これでOSの判別をすることもできます。 navigator.platformプロパティは、そのマシンのタイプについての情報をもっています。 Windows系であれば「Win32」を、Macであれば「MacPPC」などの値を返すそうなので、これでOSを判定することもできると思います。 具体的な方法については、検索サイトで「OS判別 JavaScript」をキーにして検索すれば、たくさん引っかかるページがあるので、そちらも参考になると思います。 参考までに…
その他の回答 (1)
- jakarta
- ベストアンサー率38% (607/1597)
多少ステージからはみ出した塗りたし部分をつくっておきmain.htmlを介さず直接javascriptからSWFを表示させるという方法もあります。 そうするとウインドウに追従してSWFの表示内容が拡大縮小します。 みくらべてもらうとわかると思いますがステージサイズちょうどで作成すると縦横比が変化したときに塗りたし部分がないため白場ができます。 サイズを絶対固定にしておきたいのであればindex.htmlのJavascriptの呼び出しから開くhtmlは単一のフレームにしておきスクロール表示がしないように設定し、main.htmlを呼び込ますという方法も考えられます。 こういった方法はウインドウ右端にスクロールバーの表示部分を強制的に用意してしまうNN4.7用の対策としても有効です。 OS別、かつブラウザ別に処理を振り分けることも可能ですが非常に面倒です。
お礼
ありがとうございます。 非常に参考になりました。 ブラウザによる違いなど、もっと考えて意識しようと思います。 ありがとうございました。
お礼
ありがとうございます。 非常に参考になりました。 早速試行錯誤して試してみようと思います。 ありがとうございました。