FLASH10のJavaScriptバージョンチェック方法

このQ&Aのポイント
  • FLASH10を読み込むためのJavaScriptバージョンチェック方法を教えてください。
  • 現在のJavaScriptコードではFLASH10のバージョンチェックに問題があります。
  • 修正方法を教えていただけないでしょうか。
回答を見る
  • ベストアンサー

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> となっております。 どの部分どう修正すれば対応できるでしょうか。 だれかお答えいただければ幸いです。 長文失礼致しました。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

firefoxですとVBScriptは動きません。 以下のように修正してください。 最初の部分(1~59行目)は削除 <SCRIPT LANGUAGE="Javascript"> <!-- var flashinstalled = 0; var flashversion = 0; try { var x = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); var y = x.GetVariable("$version"); var z = y.split(" ")[1].split(".")[0]; flashversion = parseInt(z); flashinstalled = 2; } catch(e) {} </SCRIPT> 以下は元のまま <SCRIPT LANGUAGE="Javascript" TYPE="text/javascript"> <!-- if (flashinstalled == 2){

koyo46
質問者

お礼

nda23様 解決いたしました。 迅速な対応と正確なお答え誠に有難うございました。

その他の回答 (3)

  • pm_tom
  • ベストアンサー率30% (3/10)
回答No.4

二桁対応に限って言えば、正規表現を使用すればよいのではないでしょうか? 例("WIN 10.0.12.36") FlashVer=FlashObj.GetVariable("$version"); FlashVerss = FlashVer.match(/(\d+).(\d+).(\d+).(\d+)/); FlashVerNo = Number(RegExp.$1);

参考URL:
http://www.tohoho-web.com/js/regexp.htm#dollar
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

先程の内容が一部間違っていました。訂正してください。 flashversion = CLng(G(UBound(G))) ← 誤 flashversion = CLng(F(UBound(F))) ← 正

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

>二桁の数値を読み込みたい 何のことでしょう? 現在のVersionを知りたいだけなら以下のScriptで取得できます。 但し、ブラウザのセキュリティチェックにかかるので、Scriptの 実行を許可、あるいはダイアログにしてください。 <SCRIPT LANGUAGE="JavaScript"> var flashinstalled = 0; var flashversion = 0; </SCRIPT> <SCRIPT LANGUAGE="VBScript"> Dim A, B, C, D, E, F Set A = CreateObject("WbemScripting.SWbemLocator") Set B = A.ConnectServer(".", "\root\default") Set C = B.Get("StdRegProv") D = "ShockwaveFlash.ShockwaveFlash\CurVer" C.GetStringValue &H80000000, D, "", E If Nor IsNull(E) Then   F = Split(E, ".")   flashinstalled = 2   flashversion = CLng(G(UBound(G))) End If </SCRIPT> <SCRIPT LANGUAGE="Javascript" TYPE="text/javascript"> 以下は元のまま flashversion に現在のバージョンが設定されています。

koyo46
質問者

補足

ご回答有難うございました。 また、失礼しました。言葉足らずだったみたいです。 現在、flash10でIEのみ画面が表示されておりfirefoxでは表示されない状況です。 素人なので詳しい事はわかりませんが、今までflashのバージョンが~9と一桁の数値を読み取っていたが、10からは二桁を読み込ませないと0か1しか吐き出せないとアドバイスをもらいました。 理屈は分かるのですが上記ソースでの変更の仕方がわかりません。 よろしければお教えな願えませんでしょうか。 宜しくお願い致します。

関連するQ&A

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

    いつもお世話になっております、 表題の通りプラグインの有無を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は 吐き出す環境変数が変わったようで、うまく処理をしてくれないのですが、何かいい方法は無いでしょうか?

  • IEにインストールされているか確認する方法

    <script language="JavaScript"> var javawsInstalled = 0; var javaws142Installed=0; var javaws150Installed=0; var javaws160Installed = 0; isIE = "false"; if (navigator.mimeTypes && navigator.mimeTypes.length) { x = navigator.mimeTypes['application/x-java-jnlp-file']; if (x) { javawsInstalled = 1; javaws142Installed=1; javaws150Installed=1; javaws160Installed = 1; } }else { isIE = "true"; } </script> <script language="VBScript"> on error resume next If isIE = "true" Then If Not(IsObject(CreateObject("JavaWebStart.isInstalled"))) Then javawsInstalled = 0 Else javawsInstalled = 1 End If If Not(IsObject(CreateObject("JavaWebStart.isInstalled.1.4.2.0"))) Then javaws142Installed = 0 Else javaws142Installed = 1 End If If Not(IsObject(CreateObject("JavaWebStart.isInstalled.1.5.0.0"))) Then javaws150Installed = 0 Else javaws150Installed = 1 End If If Not(IsObject(CreateObject("JavaWebStart.isInstalled.1.6.0.0"))) Then javaws160Installed = 0 Else javaws160Installed = 1 End If End If </script> <script language="JavaScript"> /* Note that the logic below always launches the JNLP application *if the browser is Gecko based.This is because it is not possible *to detect MIME type application/x-java-jnlp-file on Gecko-based browsers. */ if (javawsInstalled || (navigator.userAgent.indexOf("Gecko") !=-1)) { document.write("<a href=http://test023.web.fc2.com/magalingclient.jnlp><ul><li></li></ul></a>"); } else { document.write("Java がインストールされていません。"); document.write("<a href=http://java.sun.com/PluginBrowserCheck?pass=http://test023.web.fc2.com/download.html&fail=http://java.sun.com/javase/downloads/ea.jsp>ここをクリック</a> "); document.write("すると、無料ダウンロードページへジャンプします。インストールが完了すると、アプリケーションが起動します。"); } </script> この記述で、IE8 では正常に表示されますが IE9では表示・アプリケーションの起動が正常にできません。 IE8 と IE9 では、記述(確認)方法が違うのか、そもそも IE9 に互換性が無いだけなのか理由をご存知の方ご教授願います。 

  • 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>

  • ボタンが押されたときの反応 Basic

    Active Basicでゲームプログラムを書いています。 ボタンを押したときの反応で、上下左右に画像を動かしたいのですが、 ボタンを押すと、いったん静止してから、連打処理(?)のように動きます。 やりたいことは、ボタンを押すとすぐに上下左右に一定間隔で画像を動かすことです。 Sub MainWnd_KeyDown(KeyCode As Long, flags As Long) If KeyCode=37 Then If x<=3 Then Exit Sub End If MyBmpInfo=2 x=x-5 Else If KeyCode=38 Then If y<=0 Then Exit Sub End If MyBmpInfo=1 y=y-5 Else If KeyCode=39 Then If x>=600 Then Exit Sub End If MyBmpInfo=3 x=x+5 Else If KeyCode=40 Then If y>=400 Then Exit Sub End If y=y+5 End If InvalidateRect(hMainWnd,ByVal 0,TRUE) End Sub と書きました。 すみませんが、どなたかご存知の方がいらっしゃいましたら、ご教授ください。 お願いします。

  • IEでのみ作動しないJavaScriptがあり困っています

    自分のサイトでFLV動画を流したいのですが、動画の再生にはFlashPlayer8以上が必要です。 そこで、Dreamweaverが自動で挿入してくれるスクリプトでプレイヤーの有無とバージョンを確認し、 無い又は8未満の場合にはアドビのダウンロードページへ誘導できるようにしました。 しかし、IE(確認したのは6)でのみ作動してくれません。 Firefox、Safari、Operaでは問題なく動きます。 何か解ることがあれば教えて下さい。 よろしくお願いいたします。 問題のスクリプトを以下に示します。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>検出試験</title> <script type="text/javascript"> function MM_CheckFlashVersion(reqVerStr,msg){ with(navigator){ var isIE = (appVersion.indexOf("MSIE") != -1 && userAgent.indexOf("Opera") == -1); var isWin = (appVersion.toLowerCase().indexOf("win") != -1); if (!isIE || !isWin){ var flashVer = -1; if (plugins && plugins.length > 0){ var desc = plugins["Shockwave Flash"] ? plugins["Shockwave Flash"].description : ""; desc = plugins["Shockwave Flash 2.0"] ? plugins["Shockwave Flash 2.0"].description : desc; if (desc == "") flashVer = -1; else{ var descArr = desc.split(" "); var tempArrMajor = descArr[2].split("."); var verMajor = tempArrMajor[0]; var tempArrMinor = (descArr[3] != "") ? descArr[3].split("r") : descArr[4].split("r"); var verMinor = (tempArrMinor[1] > 0) ? tempArrMinor[1] : 0; flashVer = parseFloat(verMajor + "." + verMinor); } } // WebTV has Flash Player 4 or lower -- too low for video else if (userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 4.0; var verArr = reqVerStr.split(","); var reqVer = parseFloat(verArr[0] + "." + verArr[2]); if (flashVer < reqVer){ if (confirm(msg)) window.location = "http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash"; } } } } </head> <body onload="MM_CheckFlashVersion('8,0,0,0','このページのコンテンツを表示するには最新バージョンの Adobe Flash Player が必要です。今すぐダウンロードしますか?');"> </body> </html>

  • js ファイルの読み込み

    ●質問の主旨 jsファイルを読みこむためHTMLファイルを記述しましたが 読み込めません。記述が間違っているのでしょうか? それともjsファイルの格納場所がおかしいのでしょうか? JavaScriptは3日前にはじめたばかりの超初心者です。 ごぞんじのかたご教示願います。 ●ファイルの配置 jsファイル、HTMLファイルともに GoogleDrive→JavaScript(任意のフォルダ名)に格納 ●jsファイルの内容 var now = now Date(); var greeting; if(now.getHours() < 12 ) greeting = 'おはよう'; else if(now.getHours() < 18 ) greeting = 'こんにちは'; else greeting = 'こんばんは'; ●HTMLファイルの内容 <HTML> <HEAD> <TITLE>JavaScriptサンプル</TITLE> <SCRIPT language = "JavaScript" src = "file.js"></SCRIPT> </HEAD> </BODY> <SCRIPT language = "JavaScript"> <!-- alert(greeting); // --> </SCRIPT> </BODY> </HTML>

  • 背景ランダム

    JavaScriptを使って背景をランダムに変更したいので すが、その背景ごとにを左上固定や縦リピートなど を設定することは出来るのでしょうか? 宜しくお願い致します ちなみにCSSは基本だけですが理解しています <SCRIPT LANGUAGE="JavaScript"> <!-- function randomWall() { if (navigator.appVersion > '5' || (navigator.appName == 'Microsoft Internet Explorer' && navigator.appVersion > '4')) { var max = 6; wall = Math.floor(Math.random() * max) + 1; if (wall == 1) { document.body.background = '1.gif' } else if (wall == 2) { document.body.background = '2.gif} } } //--> </SCRIPT>

  • ▲ExcelのVBA▼困っています

    何度もVBAで質問させてもらい助けてもらっています。 懲りずにまた質問ですが… 下のプログラムは"●"が跳ね返るものなのですが… ●の後を■と▲が追うようなプログラムにするには なにを追加すればいいのでしょうか…?; どなたか教えて下さい;;お願いします;; Dim time1 As Integer, time As Integer Dim X As Integer, Y As Integer Dim maru As String, yoko As String, tate As String Sub 描画() Cells(X, Y).Value = maru End Sub Sub 削除() Cells(X, Y).Value = "" End Sub Sub 待機() For time1 = 0 To 1000 For time2 = 0 To 1000 Next Next End Sub Sub 座標移動() If yoko = "右" Then Y = Y + 1 Else Y = Y - 1 End If If Y = 30 Then yoko = "左" ElseIf Y = 1 Then yoko = "右" End If If tate = "上" Then X = X + 1 Else X = X - 1 End If If X = 20 Then tate = "下" ElseIf X = 1 Then tate = "上" End If End Sub Sub main() maru = "●" X = 1 Y = 1 yoko = "右" tate = "上" Do 描画 待機 削除 待機 座標移動 Loop End Sub

  • JavaScriptでFlashを表示させる方法

    フレーム対策としてJavaScriptを使っているのですが、JavaScriptがオンの時のみ Flashを呼び出すようにするのがうまくいかないので、ご指導お願いします <script type="text/javascript"language="javascript"> <!-- document.open(); document.write(" <OBJECT classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="300" height="400" align="middle">"); document.write("<param name="allowScriptAccess" value="sameDomain" />"); document.write("<param name="movie" value="aaa.swf" />"); document.write("<param name="quality" value="high" />"); document.write("<EMBED src="aaa.swf" quality="high" width="300" height="400" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_ Version=ShockwaveFlash"> </OBJECT>"); document.close(); // --> </script> 初めてJavaScriptを書いてみたのですが、やはりどこかおかしいようでswfファイルが表示されません どこが変なのか教えてください。よろしくお願いします

  • このソースを直して!【JavaScript】

    JavaScriptで、「画像をクリックしたらその画像を交互に大きくしたり小さくしたりする」というプログラムを書いたのですが、2回クリックしたら画像をクリックしても何も起こらなくなってしまいました。どうしたら解決するでしょうか? <html><head><title>test</title> <script type="text/javascript"><!-- x=128; y=128; function kaeru(){ document.images["gazou"].height = x; document.images["gazou"].width = y; if(x=64){x=128; y=128;} if(x=128){x=64; y=64;} } //--></script> </head><body> <a href="JavaScript:kaeru()"> <image src="co.gif" id="gazou" width="64"height="64"> </a> </body></html> 回答よろしくお願いします。 ちなみに if(x=128){x=64; y=64;} の所はelseにしようと思っていたのですが、elseにしたらそのelse文が実行されませんでした。