• 締切済み

プラグインの有無の判断をスクリプトで・・・

いつもお世話になっております、 表題の通りプラグインの有無をjavascriptでチェック後 それぞれの処理をさせたいと考えております。 有無とバージョン判断したいプラグインはFLASHPlayerです 以前のバージョン(FLASHPlayer5)までは function checkFlashPlugin() { str = "application/x-shockwave-flash"; ver = 0; if (navigator.mimeTypes && navigator.mimeTypes[str] && navigator.mimeTypes[str].enabledPlugin) { for(i=0; i<navigator.plugins.length; i++) { str2 = navigator.plugins[i].description; ptr = str2.indexOf("Flash"); if (ptr >= 0) ver = eval(str2.substring(ptr+6,ptr+9)); } } return ver; } で、出来ていたのですが、最新のFLASHPlayer6は 吐き出す環境変数が変わったようで、うまく処理をしてくれないのですが、何かいい方法は無いでしょうか?

noname#38849
noname#38849

みんなの回答

回答No.1

Mozilla1.0、ネスケ4.78で試してみましたが動作するみたいですよ? mimeタイプは変わらないし、descriptionも Shockwave Flash 5.0 r41 Shockwave Flash 6.0 r40 と形式は同じですし。

noname#38849
質問者

お礼

回答ありがとう御座います 僕の勘違いで、IEではサポートしないスクリプトでした NNでは、問題なく動いてくれました。 お騒がせしました、たた、IEでプラグインの有無の判定は出来ないのでしょうか?

noname#38849
質問者

補足

FLASHのバージョンの判定をさせたい理由にVer6から ストリーミングムービーのサポートが出来るようになりました。 ブロードバンド環境のアクセスならフラシュプレーヤーのDLにも時間は掛からないのですが 統計を取ってみるとBB環境とNB環境は半々だったので 任意でFLASHPlayerのダウンロードページへ促す スクリプトが欲しかったのです。

関連するQ&A

  • flash10をjsでバージョンチェックする場合

    FLASH10になり、二桁の数値を読み込みたいのですが対象ファイルのscriptが <SCRIPT LANGUAGE="Javascript"> <!-- var flashinstalled = 0; var flashversion = 0; MSDetect = "false"; if (navigator.plugins && navigator.plugins.length) { x = navigator.plugins["Shockwave Flash"]; if (x) { flashinstalled = 2; if (x.description) { y = x.description; flashversion = y.charAt(y.indexOf('.')-1); } } else flashinstalled = 1; if (navigator.plugins["Shockwave Flash 2.0"]) { flashinstalled = 2; flashversion = 2; } } else if (navigator.mimeTypes && navigator.mimeTypes.length) { x = navigator.mimeTypes['application/x-shockwave-flash']; if (x && x.enabledPlugin) flashinstalled = 2; else flashinstalled = 1; } else MSDetect = "true"; // --> </SCRIPT> <SCRIPT LANGUAGE="VBScript"> on error resume next If MSDetect = "true" Then For i = 2 to 50 If Not(IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & i))) Then Else flashinstalled = 2 flashversion = i End If Next If flashinstalled = 0 Then flashinstalled = 1 End If End If </SCRIPT> <SCRIPT LANGUAGE="Javascript" TYPE="text/javascript"> <!-- if (flashinstalled == 2){ if (flashversion < 7){ window.location="nonflash.html"; } }else{ window.location="nonflash.html"; } // --> </SCRIPT> となっております。 どの部分どう修正すれば対応できるでしょうか。 だれかお答えいただければ幸いです。 長文失礼致しました。

  • ブラウザの種類によって、処理を分岐。

    ブラウザの種類によって、処理を分岐。 以下のような感じで、ブラウザの種類(SAFARI、OPERA、FIREFOX、EXPLORERなど)によって、 perlの処理を分けたいのですが、やり方がわかりません。 (もちろん、以下は、正常に動作しません。) //↓=========================================== <script language="JavaScript"> <!-- window.onload = function(){ str = navigator.appName.toUpperCase(); if (str.indexOf("SAFARI") >= 0) browser_Name = "SAFARI"; if (str.indexOf("NETSCAPE") >= 0) browser_Name = "NETSCAPE"; if (str.indexOf("OPERA") >= 0) browser_Name = "OPERA"; if (str.indexOf("FIREFOX") >= 0) browser_Name = "FIREFOX"; if (str.indexOf("EXPLORER") >= 0) browser_Name = "EXPLORER"; if (str.indexOf("MICROSOFT") >= 0) browser_Name = "EXPLORER"; if (browser_Name == "SAFARI"){ EOM $a="1"; print <<EOM; } if (browser_Name == "NETSCAPE"){ EOM $a="10"; print <<EOM; }  : } // --> </script> //↑=========================================== どうかご教授願います。よろしくお願いします。

    • ベストアンサー
    • Perl
  • JavaScriptでブラウザの判別をしたいのですがIEだけelseの処理がなぜか追加されてしまう。

    ブラウザとバージョンを表示するスクリプトを書きたいのですがIEのときだけ 「Internet Explorer: 6.0不明」のようにelseの部分を書き出してしまいます。 Firefoxのときは「Firefox: 1.5.0.4」となりelseの部分を書き出しません。 なぜこのような結果になるのでしょうか? ちなみにFirefoxの判別の部分を消去するとなぜかこの問題が起こりません。 改善策をご存知の方がおられましたらご回答をよろしくお願いします。 ua = navigator.userAgent; if( ua.indexOf( "MSIE" ) > -1 ) { str = ua.indexOf( "MSIE" ) + 5; ver = ua.substring( str, str + 3 ); document.write( "Internet Explorer: " + ver ); } //↓ここの間を消去すると問題は起こらない。 if( ua.indexOf( "Firefox" ) > -1 ) { str = ua.indexOf( "Firefox" ) + 8; ver = ua.substring( str, str + 7 ); document.write( "Firefox: " + ver ); } //↑ここの間を消去すると問題は起こらない。 else { document.write( "不明" ); }

  • ブラウザ判別スクリプト

    ブラウザ別にcssを読み込みたいのですが、 firefox2.0に反映されません。 どうしてでしょうか? <!--ブラウザ判別 function getOSType() { var uAgent = navigator.userAgent.toUpperCase(); if (uAgent.indexOf("MAC") >= 0) return "MacOS"; if (uAgent.indexOf("WIN") >= 0) return "Windows"; if (uAgent.indexOf("X11") >= 0) return "UNIX"; return ""; } // Netscape Navigator -> Netscape // Internet Explorer -> Explorer // Safari -> Safari // Opera -> Opera function getBrowserName() { var aName = navigator.appName.toUpperCase(); var uName = navigator.userAgent.toUpperCase(); if (uName.indexOf("SAFARI") >= 0) return "Safari"; if (aName.indexOf("MICROSOFT") >= 0) return "Explorer"; if (uName.indexOf("FIREFOX") >= 0) return "Firefox"; return ""; } function getBrowserVersion() { var browser = getBrowserName(); var version = 0; var s = 0; var e = 0; var appVer = navigator.appVersion; var uName = navigator.userAgent.toUpperCase(); if (browser == "Safari") { version = eval(appVer.substring(0,3)) - 4; } if (browser == "Explorer") { appVer = navigator.userAgent; s = appVer.indexOf("MSIE ",0) + 5; e = appVer.indexOf(";",s); version = eval(appVer.substring(s,e)); } if (browser == "Firefox") { s = uName.indexOf("FIREFOX/",0); version = parseFloat(uName.substring(s+8,s+8+3)); } return version; } //--> <!--top.js os = getOSType(); browser = getBrowserName(); version = getBrowserVersion(); if (os == "MacOS") dirName = "css/mac/"; if (os == "Windows") dirName = "css/win/"; if (os == "UNIX") dirName = "css/unix/"; if (browser == "Explorer") dirName += "ie"; if (browser == "Safari") dirName += "saf"; if (browser == "Firefox") dirName += "ff"; if ((version >= 1) && (version < 2)) dirName += "top.css"; if ((version >= 2) && (version < 3)) dirName += "top.css"; if ((version >= 3) && (version < 4)) dirName += "top.css"; if ((version >= 4) && (version < 5)) dirName += "top.css"; if ((version >= 5) && (version < 5.5)) dirName += "top.css"; if ((version >= 5.5) && (version < 6)) dirName += "top.css"; if ((version >= 6) && (version < 7)) dirName += "top.css"; if ((version >= 7) && (version < 8)) dirName += "top.css"; document.write("<link rel='stylesheet' href='"+dirName+"' type='text/css'>"); //-->

  • plug-inが無い場合に他のページへ誘導するJava Script

    MacOS9.04+Adobe GoLive5.0で、HP中にQuickTimeを <embed>で埋め込んでいます。 QT Plug-inがInstallされていない方は、 用意したページにJumpというのを「日経MAC」で みました。そのソースを見て書いたのですが、 うまく動作しません。 ブラウザにmovieが表示されなくなります。 どうしてでしょうか? どこか間違えがありますでしょうか? よろしくお願い致します。 以下Java Script -- <script language="JavaScript"><!-- var exists_qtplugin=false; if(navigator.plugins){ for(i=0;i<navigator.plugins lengt; i++){ if(navigator.plugins[i].name.indexOf("QuickTime")>=0{ exists_qtplugin=ture; } } //--></script> </HEAD> <BODY BGCOLOR="#FFFFFF"> <script language="JavaScript"><!-- if(exsts_qtplugin){ document.write('<embed src="main.mov" width="300" height="200" autoplay="true" controller="fales"> </embed>'); }else{ document.write('<a href=products/index.html"><img src="products.jpg" alt="products" border="0" width="300" height="200"></a>'); } //--></script><noscript><a href=products/index.html"><img src="procucts.jpg" alt="products" border="0" width="300" height="200"></a></noscript>

  • javascriptでスマートフォン・PC分岐

    PC用のサイトとスマートフォン用のサイトをそれぞれ作り、アクセスをjavascriptで振り分けたいと考えています。 PC用とスマートフォン用のURLはあいだに"i"をはさむ違いだけです。 http://www.hoge/cate1/post_001.html http://www.hoge/i/cate1/post_001.html いろいろ調べた結果、トップページは下記でうまく行きました。 <script type="text/javascript"> if ((navigator.userAgent.indexOf('iPhone') > 0 && navigator.userAgent.indexOf('iPad') == -1) || navigator.userAgent.indexOf('iPod') > 0 || navigator.userAgent.indexOf('Android') > 0) { location.href = '/i/'; } </script> 問題は個別ページがうまく行きません。自分なりに調べて下記のように書きました。 <script type="text/javascript"> if ((navigator.userAgent.indexOf('iPhone') > 0 && navigator.userAgent.indexOf('iPad') == -1) || navigator.userAgent.indexOf('iPod') > 0 || navigator.userAgent.indexOf('Android') > 0) { location.href = '/i/location.pathname'; } </script> ところがこれではhttp://www.hoge/i/location.pathnameに行ってしまいダメです。 なぜダメなのでしょうか? この場合、どのように記述すれば良いか教えてください。 PHPとCGIとかはさっぱり判らないのでその選択肢はありません。 よろしくお願いします。

  • テキストファイルから読み込ませたい

    このプログラムをテキストファイルから読み込ませたいのですが、 どう改良したらいいかわかりません。どなたかプログラムの追加を教えていたたけないでしょうか。 #include <stdio.h> int main() { int i,key,len,num ; char str[256],*ptr[128] ; num = 0 ; len = 0 ; ptr[0] = str ; do { key = getchar(); str[len] = (char)key ; if ( key == ' ' || key == '.' || key == ',' || key == '!' || key == '?' || key == '"' || key == 0x0a || key == 0x0d ){ str[len] = '\0' ; if ( str+len-ptr[num] ){ num ++ ; } ptr[num] = str+len+1 ; if( key=='.' || key== '!' || key=='?' || key=='"'){ str[++len]=(char)key; str[++len]='\0'; ptr[++num]=&str[len+1]; } } len ++ ; } while ( key != 0x0a && key != 0x0d && len < 255 ); str[255] = '\0' ; for (i=0 ;i<num ;i++){ printf("%d. %s\n",i+1,ptr[i]); } return i ; }

  • JAVAスクリプトの記述について間違い箇所を直してください!

    以下のスクリプトを実行させると画面全体が揺れるというものなのですが、ブラウザでプレビューしたところIEでは正常に見れますがスレイプニル(Sleipnir)で表示させると何も表示されません。スクリプト内にそういった文面を記述する必要があるのでしょうか?だとしたらどこに何と記述したらよいのか教えていただけると助かります。よろしくお願いいたします。 <SCRIPT language="JavaScript"> <!-- bName = navigator.appName; bVer = parseInt(navigator.appVersion); if (bName == "Netscape" && bVer == 3) ver = "n3"; else if (bName == "Netscape" && bVer == 2) ver = "n2"; else if (bName == "Netscape" && bVer >= 4) ver = "n4"; else if (bName == "Microsoft Internet Explorer" && bVer == 2) ver = "e3"; else if (bName == "Microsoft Internet Explorer" && bVer > 2) ver = "e4"; if (navigator.appVersion.indexOf("Mac") != -1) ver+="m"; function earthquake() { if (ver == "n4" || ver == "n4m" || ver == "e4" || ver == "e4m") { for (i = 10; i > 0; i--) { for (z = 5; z > 0; z--) { self.moveBy(0,i); self.moveBy(i,0); self.moveBy(0,-i); self.moveBy(-i,0); } } } } setTimeout('earthquake()',3); //--> </script>

  • 分割した単語の頻出頻度を表示させたい

    英文テキストファイルを読み込み、分割した単語の頻出頻度を表示するプログラムを作成しています。 現時点では、分割した単語の表示しかできていません。 どなたか良きアドバイスをお願いします。 #include <stdio.h> int main() { int i,key,len,num ; int sp=0; char str[100000],*ptr[100000] ; FILE *fp; if ((fp=fopen("test.txt","r"))==NULL) { return -1; } num = 0 ; len = 0 ; ptr[0] = str ; do { key = fgetc(fp); str[len] = (char)key ; if ( (key==' ' && sp==0) || key == '.' || key == ',' || key == '!' || key == '?' || key == '"' || key == 0x0a || key == 0x0d ){ str[len] = '\0' ; if ( str+len-ptr[num] ){ num ++ ; } ptr[num] = str+len+1 ; if( key==',' || key=='.' || key== '!' || key=='?' || key=='"'){ str[++len]=(char)key; str[++len]='\0'; ptr[++num]=&str[len+1]; } } sp= (key== ' ')?1:0; len ++ ; } while ( key != EOF && len < 255 ); str[255] = '\0' ; for (i=0 ;i<num ;i++){ printf("%s\n",ptr[i]); } fclose(fp); return i; }

  • PC用のサイトとスマートフォン用のサイトの振り分け

    以前、このサイトで検索して、トップページは <script type="text/javascript"> if ((navigator.userAgent.indexOf('iPhone') > 0 && navigator.userAgent.indexOf('iPad') == -1) || navigator.userAgent.indexOf('iPod') > 0 || navigator.userAgent.indexOf('Android') > 0) { location.href = '/i/'; } </script> でできました。 ですが、最近、スマートフォンを新しくしたら、トップページが表示されなくなってしまいました。 どうしてでしょう? あと、トップページ以外のページはどのように振り分けをすればよいのでしょうか? よろしくお願いします。

専門家に質問してみよう