• ベストアンサー

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に依存した処理の選択は可能でしょうか。 またこのズレが生じた原因もお分かりになれば一緒にアドバイスをお願い致します。

  • shevy
  • お礼率67% (703/1046)
  • CSS
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
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

  • MacとWindowsにおけるサブウィンドウを開いた際のズレ

    WindowsXPのInternetExproler6で、 JavaScriptによって開くサブウィンドウのサイズを 780×468 としたとします。 それをマック(OS9.2)のInternetExproler5で開くと、 若干大きく開かれてしまいます。 800*480といった具合になっているようです。 () これを補正する方法はないでしょうか。 Flashのswfのファイルの縦と横の幅が780*467なので、 開かれるサブウィンドウにピタリとはまるようにしています。(topmargin=0と、leftmargin=0にはもちろんしております。) マック上だと、前述のように、swfファイルの縦と横の幅より大きなサブウィンドウが開かれてしまいます。 つまり、サブウィンドウとswfファイルの間に隙間が生じてしまうという状態です。 以下がウィンドウを開くためのサブルーチンです。 <script Language="JavaScript"><!-- function newWin(){ wx=780; wy=468; window.open("division1.html","sub",width="+wx+",height="+wy); } //--></script> アドバイスお願いします。

  • 『newWin』で、開くはずの頁が開きません。

    『newWin』で、開くはずの頁が開きません。 と言う事なのですが、いろいろと辞典やこの質問のコーナーを捜しましたが見つからないので質問します。 これは、CD-ROMで作ったものを見せるときに使いたいものです。 簡単なHTMLですけれど書きます。 何処がおかしいのでしょうか、教えて下さい。 <HTML> <HEAD> <TITLE>index</TITLE> <SCRIPT language="JavaScript"> <!-- function newWin(){ w = screen.availWidth ; h = screen.availHeight ; newWin1 = window.open("X.htm","newWin1","width="+w+",height="+h+");} //--> </SCRIPT> </HEAD> <booy onLoad="newWin()"> 内容 </body> </html> と、書きました。 これだと『X.htm』が自動で開くはずなのですが、なぜか開きません。 私には、分りません。 教えて下さい。御願いします。

  • JavaScript:メインページからサブウィンドウページを遷移させる際

    メインページにボタン画像3つを配置して、それぞれからサブウィンドウを任意のサイズで開こうとしています。サブウィンドウの中身はそれぞれ別のものですが、サイズは同じなのでサブウィンドウ内でwinNameを同一にして、遷移させようとしています。ただ、遷移自体はうまくいくのですが、最初のクリックでサブウィンドウはメインウィンドウより前にでますが、そのまま2つ目のボタンで遷移させようとするとサブウィンドウはメインウィンドウの後ろにいってしまいます。どうしたら、サブウィンドウを絶えずアクティブにできるのでしょうか。 メインぺージのJSにwindow.focus();をいれたり、サブウィンドウのbodyにonBlur="focus()"をいれたり、サブウィンドウのJSにwindow.focus();をいれてもうまくいきませんでした。 どうぞよろしくお願いいたします。 メインページのJS <script language="JavaScript"> <!-- function MM_openBrWindow(theURL,winName,features) { //v2.0 window.open(theURL,winName,features); } //--> </script> ボタン画像のJS Aボタン:<A href="javascript:void(0); " onClick="MM_openBrWindow('a.html','LA','width=320,height=255')"><IMG SRC="images/t_large.jpg" ALT="Large" WIDTH="120" HEIGHT="28" VSPACE="5" border="0"></A> Bボタン:<A HREF="javascript:void(0); " onClick="MM_openBrWindow('b.html','LA','width=320,height=255')"><IMG SRC="images/t_large.jpg" ALT="Large" WIDTH="120" HEIGHT="28" VSPACE="5" BORDER="0"></A>

  • 指定サイズウィンドウが開かない

    ビルダーでサイトを作成しているのですが JAVAスクリプトを使用したサイズ指定ウィンドウが ビルダーのプレビューではちゃんと開くのにFTPツールで転送し、ネット上で開こうとすると開きません。 タグの書いてあったサイトのサンプルでもちゃんと開きます。 タグは <A href="javascript:void(0);" onClick="window.open('file:///○○.html', 'newwin', 'width=900,height=600')" ><IMG src="○○.gif" width="68" height="79" border="0"></A> です。これを<BODY></BODY>に埋め込んでいます。 ○○はファイル名です。一体何処が悪いのでしょうか? 教えてください。

  • 別ウィンドウをそれぞれ違うサイズで位置指定で開きたい

    現在ウェブサイトを作っておりまして、別ウィンドウをそれぞれ違うサイズで位置指定で開きたいと思い、headの中に以下の記述をしました。 <SCRIPT language="JavaScript"> <!-- w = 800; h = 600; function season2009ss() { x = (screen.width - w) / 2; y = (screen.height - h) / 2; subWin = window.open("look/season2009ss.html","season2009ss","screenX="+x+",screenY="+y+",left="+x+",top="+y+",width="+w+",height="+h+",scrollbars=yes"); } //--> </SCRIPT> <SCRIPT language="JavaScript"> <!-- w = 500; h = 660; function contact() { x = (screen.width - w) / 2; y = (screen.height - h) / 2; subWin = window.open("mail/contact.html","contact","screenX="+x+",screenY="+y+",left="+x+",top="+y+",width="+w+",height="+h+",scrollbars=yes"); } //--> </SCRIPT> 開きたい画面は二つあり、位置は両ウィンドウとも画面の真ん中で、サイズのみ違います。 しかし、この形ですとなぜかウィンドウサイズは両方とも同じになってしまい、狙い通りにいきません。 何が原因なのでしょうか。

  • ウィンドウの大きさ&中央へ配置

    ちょっと、うまくできないので質問させていただきます。 2つ質問させていただきます。 1) 現在、javascriptを使用して、新しいウィンドウを表示させています。 その際に、ウィンドウの大きさを指定しているのですが、そのウィンドウの 大きさを、スクリーンの大きさによって、変えたいのです。 スクリーンの大きさと言っているのは、画像解像度によって画面の中に 収まる大きさが違いますよね? なので、どんな人でも、一画面の中にページを表示させたいのです。 現在こんな感じで書いているのですが、うまくいきません。 var win_width= screen.width*0.9; //画面の横幅 var win_height = screen.height*0.9; //画面の縦幅 newwin = window.open("aaa.html", "win", "width=win_width,height=win_height,menubar=no,location=no,status=no"); 上記は、画面の大きさの9割で一画面で表示させたいと思っています。 何か、間違いやアドバイスがあればよろしくお願いします。 2) また、その新しく表示させたウィンドウを画面の中央に表示させたいと 思っています。 newwin.moveTo(0,0); 上記で、左上に配置は、できるのですが、中央となると人によって違うので、 どのような考え方をしたらよろしいでしょうか? アドバイスよろしくお願いします。

  • 以前画面100%表示できる方法を教えてもらったものですが、・・・

    以前画面100%表示できる方法を教えてもらったのですが、最近になって困ったことになりました。 それは、あっちこっちで確認をしましたところ、実はMACでは何ともなかったものの、Winのパソコンで変な場所に大体正確にではありませんが、画面端から約100×100の位置に出てしまうパソコンが何台かあるのに気が付きました。 ソースを書きます。 <SCRIPT language="JavaScript"> <!-- function newWin(){ w = screen.availWidth ; h = screen.availHeight ; window.open("op_01q.html","newWin","width="+w+",height="+h) ; window.moveTo(-1,-1) ; } //--> </SCRIPT> で、できるとは思いますが、何か足りないのか分かりません。 どうか宜しくお願いします。

  • JavaScriptで、小窓を開きたいのですが…

    色々やってみましたが、イマイチどうも上手く行かないのです。小窓を開けても、小窓にページの表示が出来なかったり、ちゃんとページが開けてもサイズ指定したのに大きいウィンドウで開いたり…。 HP作成ソフトでサイトを作っている程度の知識しかありませんので、どなたか分かりやすく教えて下さい。 開きたいページは、time-s.htmlで、「ここ」というリンクをクリックして小窓で開かせたいです。 ちなみに現在は、head内に <script type="text/javascript"><!-- function newWin(){ window.open("time-s.html","time","width=196, height=176, scrollbars=no, location=no, menubar=no"); } //--></script> body内に <a href="javascript:void(0);" onClick="window.open('time-s.html', 'time', 'width=300,height=220')">ここ</a> としてあります。 色々張りつけてるうちに、ごっちゃになってしまったみたいです(汗) ご親切な方、よろしくお願いします。

  • ウィンドウを最大化で開く方法を教えてください。

    こんにちは。 以下の方法でモニタサイズにあわせてウィンドウを開くことはできたのですが・・・ ------------------------------ <html> <head> <title>ウィンドウサイズをモニタサイズに合わせる</title> <script Language="JavaScript"> <!-- moveTo(0,0); resizeTo(screen.width,screen.height); // --> </script> </head> <body> ウィンドウサイズをモニタサイズに合わせる </body> </html> ------------------------------ モニタのサイズに合わせるのではなくて、最大化の状態(ブラウザ右上のアイコンが「元のサイズに戻す」になる状態)で開くようにしたいのですが、そういう方法はありますか? できるだけシンプルなスクリプトでIE・NN両方に対応していれば・・・と思います。なお、「全画面表示」はしたくないので、お間違えのないようお願い致します。よろしくおねがいします。

  • JavaScriptソース

    文字列をクリックするとサブウィンドウが開くという JavaScriptです。必死にやってみましたが、IEではOK、ネスケでは作動しません。何度も何度もやってもだめで、どこからみても見本のソースと一緒なのにできません。ネスケでは厳密に作らないとだめだとか。すいません、どこが変なのでしょう。下にソースをのせます。よろしくお願いします。 <HEAD>~</HEAD>の間 <SCRIPT language="JavaScript"> <!-- function WinOpen1(){ window.open('SUBWSOURCE/uosu1.html','window2','resizable=1,scrollbars=0,menubar=0,directories=0,status=0,location=0,width=600,height=500'); } // --> </SCRIPT> <BODY>の部分 <td width="140"><p><img src="TOPPARTS/OSUTOP01.JPG" width="140" height="80" border="0"><br> <img src="common/spacer.gif" width="1" height="5" border="0"><br> <a href="javascript:WinOpen1();"><font size="2">文字列</a></font><font size="1">テキスト</font></td> </tr> </table> ちなみにここでは1つ分ですが、実際は10のウィンドウが開くよう指示しています。大変見にくいとは思いますが、よろしくおねがいします・・。

専門家に質問してみよう