プロが教えるわが家の防犯対策術!

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>
となっております。

どの部分どう修正すれば対応できるでしょうか。
だれかお答えいただければ幸いです。
長文失礼致しました。

A 回答 (4件)

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){
    • good
    • 0
この回答へのお礼

nda23様

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

お礼日時:2008/11/11 17:48

二桁対応に限って言えば、正規表現を使用すればよいのではないでしょうか?



例("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
    • good
    • 0

先程の内容が一部間違っていました。

訂正してください。
flashversion = CLng(G(UBound(G))) ← 誤
flashversion = CLng(F(UBound(F))) ← 正
    • good
    • 0

>二桁の数値を読み込みたい


何のことでしょう?
現在の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 に現在のバージョンが設定されています。

この回答への補足

ご回答有難うございました。
また、失礼しました。言葉足らずだったみたいです。

現在、flash10でIEのみ画面が表示されておりfirefoxでは表示されない状況です。
素人なので詳しい事はわかりませんが、今までflashのバージョンが~9と一桁の数値を読み取っていたが、10からは二桁を読み込ませないと0か1しか吐き出せないとアドバイスをもらいました。
理屈は分かるのですが上記ソースでの変更の仕方がわかりません。

よろしければお教えな願えませんでしょうか。
宜しくお願い致します。

補足日時:2008/11/11 16:26
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!