バージョンを効率的かつ効果的に検出するにはどうすればよいでしょうか。さらに言えば、ブラウザーで現在実行されているSilverlightのインスタンスに関する入手可能な情報を検出するにはどうすればよいでしょうか?
6 に答える
Silverlight コントロールにはIsVersionSupported 関数のみがあり、バージョン番号を指定すると true / false を返します。次に例を示します。
if(slPlugin.isVersionSupported("2.0")) {
alert("I haz some flavour of Silverlight 2");
バージョン文字列には次のすべてを含めることができるため、ビルドを確認するときに必要なだけ具体的にすることができます。
- major - メジャー番号
- minor - マイナー番号
- build - ビルド番号
- リビジョン - リビジョン番号
したがって、次のように特定のビルド番号を確認できます。
if(slPlugin.isVersionSupported("2.0.30523")) {
alert("I haz Silverlight 2.0.30523, but could be any revision.");
Silverlight 1.0 Beta には、 isVersionSupported() メソッドに置き換えられた control.settings.version プロパティが含まれていました。これは、Silverlight の特定のバージョンに対してプログラミングを行うべきではないという考え方です。むしろ、クライアントに少なくともバージョン 1.0 または 2.0 などがあるかどうかを確認する必要があります。
そうは言っても、Silverlight プラグインの説明を確認することで、Firefox で Silverlight のバージョン番号を取得できます。
alert(navigator.plugins["Silverlight Plug-In"].description);
コンピューターに「2.0.30523.8」と表示されます。
リリースされたすべてのバージョン番号を反復することで、総当たり攻撃が可能であることに注意してください。おそらくそれが BrowserHawk の機能であり、クライアントがインストールした Silverlight のバージョンを報告します。
Silverlight の完全なバージョンを検出するこのサイトを見つけました- Silverlight バージョン(別名 silverlightversion.com)
http://forums.asp.net/p/1135746/1997617.aspx#1997617からこれを入手しました。これは、 Stuが提供したのと同じリンクです。コードスニペットを含めました。
Silverlight.isInstalled = function(d)
{
var c = false, a = null;
try
{
var b = null;
if(Silverlight.ua.Browser == "MSIE")
b = new ActiveXObject("AgControl.AgControl");
else
if(navigator.plugins["Silverlight Plug-In"])
{
a = document.createElement("div");
document.body.appendChild(a);
a.innerHTML = '<embed type="application/x-silverlight" />';
b = a.childNodes[0]
}
if(b.IsVersionSupported(d))
c = true;
b = null;
Silverlight.available = true
}
catch(e)
{
c=false
}
if(a)
document.body.removeChild(a);
return c
};
Environment.Version はあなたが望むことをします! Silverlight 2.0 以降でサポート
上記のコメントで述べたように、現在、インストールされている Silverlight のバージョン番号を取得するための効率的な直接的な方法はありません (クロス ブラウザー プラットフォームで機能します)。
この問題を回避し、Silverlight のメジャー バージョン番号 (バージョン 3 を含む) をプログラムでより効率的に JavaScript を使用して検出する方法についての投稿を書きました。
コードと投稿は次の場所にあります。
幸運を!
silverlight.js を見てください。