При определение версии Silverlight в Internet Explorer возникает проблема, т.к. есть всего лишь одна функция в ActiveX-объекте для этих целей — isVersionSupported().
К счастью, есть решение, найденное на silverlightversion.com.
function getSilverlightVersion() { var version = null; if (window.ActiveXObject) { try { var control = new ActiveXObject('AgControl.AgControl'); function loopMatch(control, vers, idx, inc) { while(isSupported(control, vers)) { vers[idx] += inc; } vers[idx] -= inc; } function isSupported(control, ver) { return control.isVersionSupported(ver.join('.')); } var vers = [1, 0, 0, 0]; loopMatch(control, vers, 0, 1); loopMatch(control, vers, 1, 1); loopMatch(control, vers, 2, 10000); loopMatch(control, vers, 2, 1000); loopMatch(control, vers, 2, 100); loopMatch(control, vers, 2, 10); loopMatch(control, vers, 2, 1); loopMatch(control, vers, 3, 1); version = vers.join('.'); } catch (e) {} } else { var plugin = navigator.plugins['Silverlight Plug-In']; if (plugin) { version = plugin.description; } } return version; }