• 締切済み

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 に互換性が無いだけなのか理由をご存知の方ご教授願います。 

みんなの回答

回答No.2

>No.1 補足 それは確認する方法(提示されたコード)が悪いのではなく、実行の仕方(.jnlpの中身)が悪いのでは? または、セキュリティー設定で弾かれてませんか?

kame_kenji
質問者

補足

「ツール」→「インターネットオプション」→「セキュリティ」→インターネットの「レベルのカスタマイズ」→「スクリプト」でONに設定。 regsvr32 jscript.dll と regsvr32 vbscript.dll を実行済。 jnlp中身は <?xml version="1.0" encoding="UTF-8"?> <jnlp spec="1.0+" codebase="http://test023.web.fc2.com/" href="magalingclient.jnlp"> <information> <title>Magaling</title> <vendor>LOZADA</vendor> <homepage href="http://test023.web.fc2.com/"/> <description>LOZADA</description> <description kind="short">Java Web Start</description> <icon href="http://test023.web.fc2.com/img/ico.png"/> </information> <resources> <j2se version="1.6+"/> <jar href="saya.jar"/> </resources> <application-desc main-class="MagalingClient"/> </jnlp> 問題ありでしょうか?チンプンカンプンになってきました。

回答No.1

JAVAのバージョンまでを調べるのではなく、たんに実行できるかどうかを調べるだけなら navigator.javaEnabled() こういうのがありますが。 IE9についてはわかりません。 サポートしなくなると言うことは無いと思いますが。。。

kame_kenji
質問者

お礼

回答ありがとうございます。 IE9についてもう少し調べてみます。

kame_kenji
質問者

補足

作成したJavaアプリケーションを、Java Web Start で実行 させるためのスクリプトのつもりだったのですが、XPでIE8 の環境では正常に動作します。 Win7 でIE9だと表示もおかしく、JNLPファイルの読み込み もできなくなります。

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

  • IE6だけの判定、IE7だけの判定について

    こんにちは。 下記の「IE6だけの判定方法(JavaScript)」で、どれが一番いいのか、 或は、もっと正確で簡素な良い方法があるのかどうかを教えてください。 また、IE7だけの判定方法も記載しますので、ご指導お願いします。 色々試した結果は、一応全部OKでした。 ただ、プログラマーでないので心配なので質問させて頂きました。 もうひとつ、!!は何かundefinedやfunctionを、true、falseへと整形してるようですが、 これを、業界用語で何って言うのかも、教えてください。よろしくお願いします。 <script> /* IE6だけの判定方法 */ // (1) var ua = navigator.userAgent.toLowerCase(); var bver = (ua.match(/.+(?:rv|webkit|khtml|opera|msie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]; var isIE6a = (/msie/.test(ua) && !/opera/.test(ua) && parseInt(bver) < 7 && (!window.XMLHttpRequest || typeof(XMLHttpRequest) === 'function')); if (isIE6a) document.write('IE6'); // (2) var isIE6b = document.uniqueID && document.compatMode && !window.XMLHttpRequest && document.execCommand; if (!!isIE6b) document.write('IE6'); // (3) var isIE6c = /msie|MSIE 6/.test(navigator.userAgent); if (isIE6c) document.write('IE6'); /* IE7だけの判定方法 */ var isIE7 = window.XMLHttpRequest && (/*@cc_on!@*/false) && !(document.documentMode >=8); if (!!isIE7) document.write('IE7'); </script>

  • JavaScriptを外部ファイルにするとロールオーバーが機能しない

    ホームページビルダー11を使っているのですが、 JavaScriptを外部ファイルにして読み込ませると、ロールオーバー部分の画像のみ切り替わりません。 ////////////////////////////////////////////////// ■外部ファイルの記述内容■ <SCRIPT language="JavaScript"> <!--HPB_SCRIPT_ROV_50 function HpbImgPreload() { var appVer=parseInt(navigator.appVersion); var isNC=false,isN6=false,isIE=false; if (document.all && appVer >= 4) isIE=true; else if (document.getElementById && appVer > 4) isN6=true; else if (document.layers && appVer >= 4) isNC=true; if (isNC||isN6||isIE) { if (document.images) { var imgName = HpbImgPreload.arguments[0]; var cnt; swImg[imgName] = new Array; for (cnt = 1; cnt < HpbImgPreload.arguments.length; cnt++) { swImg[imgName][HpbImgPreload.arguments[cnt]] = new Image(); swImg[imgName][HpbImgPreload.arguments[cnt]].src = HpbImgPreload.arguments[cnt]; } } } } function HpbImgFind(doc, imgName) { for (var i=0; i < doc.layers.length; i++) { var img = doc.layers[i].document.images[imgName]; if (!img) img = HpbImgFind(doc.layers[i], imgName); if (img) return img; } return null; } function HpbImgSwap(imgName, imgSrc) { var appVer=parseInt(navigator.appVersion); var isNC=false,isN6=false,isIE=false; if (document.all && appVer >= 4) isIE=true; else if (document.getElementById && appVer > 4) isN6=true; else if (document.layers && appVer >= 4) isNC=true; if (isNC||isN6||isIE) { if (document.images) { var img = document.images[imgName]; if (!img) img = HpbImgFind(document, imgName); if (img) img.src = imgSrc; } } } HpbImgPreload('_HPB_ROLLOVER1', 'images/request.gif', 'images/request2.gif'); //--> </SCRIPT> ////////////////////////////////////////////////////// 外部ファイル読み込み時のhtmlタグ <SCRIPT type="text/javascript" scr="images/ファイル名"></SCRIPT> 恐らく、ホームページビルダーの独自性の問題だと思うのですが、 どうすればロールオーバーを機能させることができるでしょうか? 宜しくお願いいたします。

  • 起動しているIEをVBSで閉じるときの問題・・・

    VBスクリプトで起動しているIEを探し特定のサイトであればウィンドウを閉じたいのですがどのようにすればよいのでしょうか? Dim ObjIE Dim ObjShell Dim ObjWindow Dim WinExist WinExist = False Set ObjShell = CreateObject("Shell.Application") For Each ObjWindow In ObjShell.Windows If TypeName(ObjWindow.Document) = "HTMLDocument" Then WinExist = True Set ObjIE = ObjWindow End If Next Set ObjShell = Nothing If Not WinExist = True Then Set ObjIE = CreateObject("InternetExplorer.Application") End If If objIE.Document.URL = "http://www.yahoo.co.jp/" Then objIE.quit End If If objIE.Document.URL = "http://www.excite.co.jp/" Then objIE.quit End If If objIE.Document.URL = "http://www.google.co.jp/" Then ?????????? End If ・ ・ ・ 例えばディスプレイ上にYahoo、Excite、Googleのホームページがそれぞれ立ち上がっていたとします。 もしYahooがあれば閉じて次にExciteを探しあれば閉じて、次にGoogleのページがあればそのままにし後の処理を行わず終わらせたいのですが・・・もしGoogleが開いていればこれ以降の処理を全てすっ飛ばして終了にしたいのですが・・・ また、If thenを繰り返してばかりで汚いコードのような気もします。 これをやっていてYahoo、Excite、Google全て開いていた場合何故かエラーが出て終了してしまいます。 どなたかいい方法があれば教えて下さい。

  • WinとMacのFirefox以外は違うindexに飛ばすスクリプトについて

    Javascript初心者です。 iframeを使用したHP作成後、ブラウザCheckしたところ(細かいバージョン指定まではしていません) Windows版のブラウザはほぼ全般○ですが、MacはFirefox以外×でした。 なのでindex.htmlに下記判別をさせたいのです。↓ 「OSがwinの場合とOSがMacでブラウザがFirefox(Gecko)の場合はそのまま、 それ以外はindex2.htmlに飛ばす。」 スクリプトを自分なりに書いてみたのですが、これであっているのかが、自信がありません。 どなたか上記方法をご存知の方、または下記スクリプトの間違いがわかる方。 お願いします、教えてください。 if(navigator.appVersion.indexOf("win") != -1){ document.write(); else if(navigator.appVersion.indexOf("Mac") != -1){ if{(navigator.userAgent.indexOf('Gecko/')!=-1) document.write(); } else{ location.replace("index2.html"); } }

  • java詳しい方宜しくお願いします。

    <!--HPB_SCRIPT_CODE_40 function _HpbShowObj(lId) { var ob;ob=new Array; var appVer=parseInt(navigator.appVersion); var isNC=false,isN6=false,isIE=false; if (document.all && appVer >= 4) isIE=true; else if (document.getElementById && appVer > 4) isN6=true; else if (document.layers && appVer >= 4) isNC=true; if (isNC) { w_str = "document." + lId;ob[lId] = eval(w_str); if (!ob[lId]) ob[lId] = _HpbFindHiddenObj(document, lId); if (ob[lId]) ob[lId].visibility = "show"; } if (isN6) { ob[lId] = document.getElementById(lId); ob[lId].style.visibility = "visible"; } if (isIE) { w_str = "document.all.item(\"" + lId + "\").style";ob[lId] = eval(w_str); ob[lId].visibility = "visible"; } } function _HpbFindHiddenObj(doc, lId) { for (var i=0; i < doc.layers.length; i++) { var w_str = "doc.layers[i].document." + lId; var obj;obj=new Array; obj[lId] = eval(w_str); if (!obj[lId]) obj[lId] = _HpbFindHiddenObj(doc.layers[i], lId); if (obj[lId]) return obj[lId]; } return null; } //--> </script> これは何をするスクリプトでしょうか? ぜひご教授下さいませ。

    • ベストアンサー
    • Java
  • IEのバージョンが7以下の際。ポップアップ表示

    こんにちわ。 今回やりたいことは、JavaScriptを使って、ブラウザのバージョンを判別し、メッセージウィンドをポップアップさせたいと思っています。 いかんせん、やっと最近HTMLとCSSの使い方がわかってきた程度で、JavaScriptは初心者です。(プログラム自身はVBAなどでそこそこ作っているので、なんとなくやり方はわかるんですが、実装が全く分かりません) 以下のようなサイトを見つけました。 http://jisakupc-technical.info/programing/javasc … 【以下ページ内のプログラム】 // ブラウザのUAを小文字で取得 var userAgent = window.navigator.userAgent.toLowerCase(); // IEの判定 var isIE = (userAgent.indexOf('msie') >= 0 || userAgent.indexOf('trident') >= 0); // IEのバージョンを取得 if (isIE) { // 正規表現によりUA文字列を配列に分割 var arr = /(msie|rv:?)\s?([\d\.]+)/.exec(userAgent); version = (arr) ? arr[2] : ''; return 'ie'+version; } else { // IE以外のブラウザ判定 if (userAgent.indexOf('chrome') != -1) { /* Google Chrome. */ return 'chrome'; } else if (userAgent.indexOf('firefox') != -1) { /* FireFox. */ return 'firefox'; } else if (userAgent.indexOf('safari') != -1) { /* Safari. */ return 'safari'; } else if (userAgent.indexOf('opera') != -1) { /* Opera. */ return 'opera'; } else if (userAgent.indexOf('edge') != -1) { /* Edge. */ return 'edge'; } else if (userAgent.indexOf('gecko') != -1) { /* Gecko. */ return 'gecko'; } else { return false; } } 分からないのが、Returnで返り値を返していますが、「どこ」に返しているのでしょうか? HTML構文内? この辺の、JavaScriptとHTMLの関連性がよく理解できていません。 最終的にやりたいのは、ブラウザがIEでかつ7以下もしくはIE8以上だが互換表示モードだとポップアップをさせたいということです。 何か良いアドバイスを頂けると大変助かります。

  • IEを探すプログラムがうまくいきません。

    VBScriptで指定するサイトが開いていなかった場合とある処理を行い、とあるサイトが開いていれば別の処理をし終了させることをやっていますがうまくいきません。 自分の考えとしては 1・開いているIEをくるくるループ回して探す 2・その中にヤフーがあればフラグをTrue処理   それ以外はFalse処理 これだけで終わりにしたいのですが・・・ Dim objIE Dim objShell Dim objWindow Dim WinExist Dim strURL Dim Flug Dim strURL2 strURL = "http://www.yahoo.co.jp/" strURL2 = "http://www.google.co.jp/" 'IEが起動して無い場合プログラムが起動しないのでダミー立ち上げ Set objIE = WScript.CreateObject("InternetExplorer.Application") objIE.Navigate "about:blank" objIE.Visible = True Set objIE = Nothing WinExist = False Set objShell = CreateObject("Shell.Application") For Each objWindow In objShell.Windows If TypeName(objWindow.Document) = "HTMLDocument" Then WinExist = True Set objIE = objWindow End If Next If objIE.LocationURL = strURL Then Flug = True Else If objIE.LocationURL <> strURL Then Flug = False Else WScript.sleep(1) End If If Flug = False Then Set objIE = WScript.CreateObject("InternetExplorer.Application") objIE.Navigate strURL2 objIE.Visible = True Set objIE = Nothing End If ' 'いろいろな処理があるが省く ' If Flug = True Then msgbox "ヤフー存在" End If End If 絶対にフラグがTrueになることがありません。 Excelでデバッグしてみましたがなぜうまくいかないのかが理解できておりません。 自分としては開いているIEをぐるぐるとまず回ってヤフーが開いていればTrue時の処理を行い終了、 なければFalse時の処理を行うという風にしたいです(無限ループではありませんでした) For eachを使っているので途中でIf Flug以降の処理を行ってしまうのも無駄な繰り返しで困ってしまいます。 そこでフラグを立てることを考えたのですがどうも思うようにいきません。 ボキャブラリが足りませんが、いい知恵を貸していただけないでょうか?

  • エラーログの処理方法について

    VBScriptの処理でログを出す処理作っているのですが処理中に何らかの原因で正常な処理が出来なかった場合にエラーログを出したいのですが冗長にならないようにしたいのですが・・・どうすればよいでしょうか? Option Explicit Const ForAppending = 8 Dim objFileSysFolder Dim objOutFile Dim objFileSysText Dim strScriptPath Dim strCheckPath Dim strCreatePath Dim strDate Dim strCreateFile ・ ・ ・ If XXXX then aaaa Else bbbb End If ・ ・ ・ If YYYY then CCCC Else DDDD End If ・ ・ ・ If ZZZZ then EEEE Else fffff End If Set objFileSysFolder = CreateObject("Scripting.FileSystemObject") strCheckPath = objFileSysFolder.BuildPath("D:\","TEST") strDate = CStr(Right("0000" & Year(Now),4) & Right("00" & Month(Now),2)) If objFileSysFolder.FolderExists(strCheckPath) = True Then Set objFileSysText = CreateObject("Scripting.FileSystemObject") strScriptPath = Replace(WScript.ScriptFullName,WScript.ScriptName,"") strCreateFile = objFileSysText.BuildPath(strScriptPath,strDate & ".log") If objFileSysText.FileExists(strCheckPath) = True Then Set objOutFile = objFileSysText.OpenTextFile(strCreateFile,ForAppending) objOutFile.WriteLine "Date[" & date & "] " & _ "Time[" & time & "] " & _ "User[" & "OK" & "]" objOutFile.Close Else Set objOutFile = objFileSysText.OpenTextFile(strCreateFile,ForAppending) objOutFile.WriteLine "Date[" & date & "] " & _ "Time[" & time & "] " & _ "User[" & "NG" & "]"'ここでメッセージを変えたい objOutFile.Close End If End If Set objFileSysFolder = Nothing Set objFileSysText = Nothing Set objOutFile = Nothing こういったログのルーチンをあるとしますが、If~Else~End Ifの部分でElse以降の場合メッセージを変えるにはどうすればいいでしょうか?

  • 起動しているプロセスの確認

    2005の.netです。   If notepadが起動していたら Then ・・・ Else ・・・ End If というのを作りたいのですが、 タスクマネージャのプロセスから確認するというのでしょうか、 直接、起動しているかの確認をさせたいのですが、 教えてもらえないでしょうか。