如何偵測使用者有無安裝 Silverlight?

使用 Silverlight 的 JavaScript API 來判斷使用者是否有安裝 Silverlight 2.0 Runtime。

Silverlight 2.0 推出後,因為 Programming Model 以及工具支援的成熟,我認為以後使用 Silverlight 2.0 或更新版本開發的網站會愈來愈多,或是要導入 Silverlight 做 RIA Solution,不過在讓使用者享受辛勤開發的成果前,得要先讓使用者知道必須要安裝 Silverlight 2.0 Runtime。

因此,在 Silverlight 的 JavaScript API 中有提供一個小函式:isInstalled(),它可以偵測目前使用者有沒有安裝指定版本的 Silverlight Runtime,因此可以利用一個小程式:

<head runat="server">
    <script language="javascript" type="text/javascript" src="Silverlight.js"></script>
    <script language="javascript">

        var requiredSilverlightMinVer = "2.0.31005.0";

        function checkSilverlightInstalled() {

            if (!Silverlight.isInstalled(requiredSilverlightMinVer)) {
                document.getElementById("cmdSignIn").disabled = true;
                document.getElementById("labelSilverlightIsInstalled").innerHTML = 
                   "<a href='http://www.microsoft.com/silverlight/resources/install.aspx?v=" 
                   + requiredSilverlightMinVer + 
                   "'>本系統需要 Microsoft Silverlight 2.0,請由此安裝。</a>";
            }
        }
   
    </script>
</head>
<body onload="checkSilverlightInstalled()">
...

雖然 Silverlight 自己本身在發現使用者未安裝 Silverlight Runtime 時會提示,但若不想讓使用者看到的話,用 API 來判斷可也是個不錯的選擇。