電子書籍の厳選無料作品が豊富!

自分のサイトで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.dt …
<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 …
}
}
}
}
</head>

<body onload="MM_CheckFlashVersion('8,0,0,0','このページのコンテンツを表示するには最新バージョンの Adobe Flash Player が必要です。今すぐダウンロードしますか?');">

</body>
</html>

A 回答 (2件)

こんにちは。


上記だと、IE判定が弱いようです。
---
isOpera: function () {return !!window.opera}
isSafari: function () {return navigator.userAgent.indexOf("Safari") != -1}
isNetscape: function () {return navigator.appName.charAt(0) == "N" && !this.isSafari()}
isNN6: function () {return !!document.getElementById && this.isNetscape()}
isIEchk: function () {return !!document.all && !this.isNetscape() && !this.isOpera()}
▲それぞれ true or false が入ります▲

function MM_CheckFlashVersion(reqVerStr,msg){
with(navigator){
var isIE = this.isIEchk;

(※以下省略※)
}
---
動作検証済です。こちらで、いかがでしょう?
    • good
    • 0
この回答へのお礼

書き込みありがとうございます。

No.1の方のところにも書きましたとおり、自分はまだjavascriptをきちんと理解できていません。
どこをどう直したらよいかもわかりせん。
ただ、せっかく詳しく書いていただいたので、「わかりません」だけでは失礼と思い、参考書やサイトをみて頑張ってみました。
しかし、やはり今の自分には理解できるものではありませんでした。
見ず知らずの者のためにスクリプトまで書いていただいたのに、すみません。

また、色々調べていくうちにwindowsだけはjavascriptではなく、ActiveXを使うと説明しているサイトがあったり、余計にわからなくなってしまいました。
しかし、示していただいたスクリプトなら作動検証済みということなので、IEも含めてそれ単体で問題なく作動するのですよね。

図々しくて気が引けるのですが、もしよろしければ実際にはこう書くとうのを見せていただくことはできませんでしょうか。

お礼日時:2008/10/29 13:24

if (!isIE || !isWin){


の条件で IEの場合跳ねられてしまうようですけど ・・・

IEの場合に実行させたい部分はどこなのでしょう
    • good
    • 0
この回答へのお礼

書き込みありがとうございます。

実は、ここの一番下にある説明の通り、ソフトウェアが自動的に挿入してくれるスクリプトなので、自分自身よくわかっていないのです。
http://www.adobe.com/jp/devnet/dreamweaver/artic …

自動挿入なので、てっきり完璧なものなのだと思っていたのですが、IEだけは動かないので困ったなと。

そもそもjavascript自体勉強を始めたばかりで、せっかくご指摘いただいたのに、それを理解すらできなくて申し訳ありません。
もう少し頑張って勉強します。

お礼日時:2008/10/29 13:01

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