Update: Silverlight Script Module
This commit is contained in:
1 parent
1cbbf1dde4
commit
404d5c9120
4 files changed
+830
-8
No files matched your search
@@ -1,2 +1,413 @@
|
||||
//v2.0.30511.0
|
||||
if(!window.Silverlight)window.Silverlight={};Silverlight._silverlightCount=0;Silverlight.__onSilverlightInstalledCalled=false;Silverlight.fwlinkRoot="http://go2.microsoft.com/fwlink/?LinkID=";Silverlight.__installationEventFired=false;Silverlight.onGetSilverlight=null;Silverlight.onSilverlightInstalled=function(){window.location.reload(false)};Silverlight.isInstalled=function(b){if(b==undefined)b=null;var a=false,m=null;try{var i=null,j=false;if(window.ActiveXObject)try{i=new ActiveXObject("AgControl.AgControl");if(b===null)a=true;else if(i.IsVersionSupported(b))a=true;i=null}catch(l){j=true}else j=true;if(j){var k=navigator.plugins["Silverlight Plug-In"];if(k)if(b===null)a=true;else{var h=k.description;if(h==="1.0.30226.2")h="2.0.30226.2";var c=h.split(".");while(c.length>3)c.pop();while(c.length<4)c.push(0);var e=b.split(".");while(e.length>4)e.pop();var d,g,f=0;do{d=parseInt(e[f]);g=parseInt(c[f]);f++}while(f<e.length&&d===g);if(d<=g&&!isNaN(d))a=true}}}catch(l){a=false}return a};Silverlight.WaitForInstallCompletion=function(){if(!Silverlight.isBrowserRestartRequired&&Silverlight.onSilverlightInstalled){try{navigator.plugins.refresh()}catch(a){}if(Silverlight.isInstalled(null)&&!Silverlight.__onSilverlightInstalledCalled){Silverlight.onSilverlightInstalled();Silverlight.__onSilverlightInstalledCalled=true}else setTimeout(Silverlight.WaitForInstallCompletion,3e3)}};Silverlight.__startup=function(){navigator.plugins.refresh();Silverlight.isBrowserRestartRequired=Silverlight.isInstalled(null);if(!Silverlight.isBrowserRestartRequired){Silverlight.WaitForInstallCompletion();if(!Silverlight.__installationEventFired){Silverlight.onInstallRequired();Silverlight.__installationEventFired=true}}else if(window.navigator.mimeTypes){var b=navigator.mimeTypes["application/x-silverlight-2"],c=navigator.mimeTypes["application/x-silverlight-2-b2"],d=navigator.mimeTypes["application/x-silverlight-2-b1"],a=d;if(c)a=c;if(!b&&(d||c)){if(!Silverlight.__installationEventFired){Silverlight.onUpgradeRequired();Silverlight.__installationEventFired=true}}else if(b&&a)if(b.enabledPlugin&&a.enabledPlugin)if(b.enabledPlugin.description!=a.enabledPlugin.description)if(!Silverlight.__installationEventFired){Silverlight.onRestartRequired();Silverlight.__installationEventFired=true}}if(!Silverlight.disableAutoStartup)if(window.removeEventListener)window.removeEventListener("load",Silverlight.__startup,false);else window.detachEvent("onload",Silverlight.__startup)};if(!Silverlight.disableAutoStartup)if(window.addEventListener)window.addEventListener("load",Silverlight.__startup,false);else window.attachEvent("onload",Silverlight.__startup);Silverlight.createObject=function(m,f,e,k,l,h,j){var d={},a=k,c=l;d.version=a.version;a.source=m;d.alt=a.alt;if(h)a.initParams=h;if(a.isWindowless&&!a.windowless)a.windowless=a.isWindowless;if(a.framerate&&!a.maxFramerate)a.maxFramerate=a.framerate;if(e&&!a.id)a.id=e;delete a.ignoreBrowserVer;delete a.inplaceInstallPrompt;delete a.version;delete a.isWindowless;delete a.framerate;delete a.data;delete a.src;delete a.alt;if(Silverlight.isInstalled(d.version)){for(var b in c)if(c[b]){if(b=="onLoad"&&typeof c[b]=="function"&&c[b].length!=1){var i=c[b];c[b]=function(a){return i(document.getElementById(e),j,a)}}var g=Silverlight.__getHandlerName(c[b]);if(g!=null){a[b]=g;c[b]=null}else throw"typeof events."+b+" must be 'function' or 'string'";}slPluginHTML=Silverlight.buildHTML(a)}else slPluginHTML=Silverlight.buildPromptHTML(d);if(f)f.innerHTML=slPluginHTML;else return slPluginHTML};Silverlight.buildHTML=function(a){var b=[];b.push('<object type="application/x-silverlight" data="data:application/x-silverlight,"');if(a.id!=null)b.push(' id="'+Silverlight.HtmlAttributeEncode(a.id)+'"');if(a.width!=null)b.push(' width="'+a.width+'"');if(a.height!=null)b.push(' height="'+a.height+'"');b.push(" >");delete a.id;delete a.width;delete a.height;for(var c in a)if(a[c])b.push('<param name="'+Silverlight.HtmlAttributeEncode(c)+'" value="'+Silverlight.HtmlAttributeEncode(a[c])+'" />');b.push("</object>");return b.join("")};Silverlight.createObjectEx=function(b){var a=b,c=Silverlight.createObject(a.source,a.parentElement,a.id,a.properties,a.events,a.initParams,a.context);if(a.parentElement==null)return c};Silverlight.buildPromptHTML=function(b){var a="",d=Silverlight.fwlinkRoot,c=b.version;if(b.alt)a=b.alt;else{if(!c)c="";a="<a href='javascript:Silverlight.getSilverlight(\"{1}\");' style='text-decoration: none;'><img src='{2}' alt='Get Microsoft Silverlight' style='border-style: none'/></a>";a=a.replace("{1}",c);a=a.replace("{2}",d+"108181")}return a};Silverlight.getSilverlight=function(e){if(Silverlight.onGetSilverlight)Silverlight.onGetSilverlight();var b="",a=String(e).split(".");if(a.length>1){var c=parseInt(a[0]);if(isNaN(c)||c<2)b="1.0";else b=a[0]+"."+a[1]}var d="";if(b.match(/^\d+\056\d+$/))d="&v="+b;Silverlight.followFWLink("149156"+d)};Silverlight.followFWLink=function(a){top.location=Silverlight.fwlinkRoot+StringLine truncated
|
||||
if (!window.Silverlight) {
|
||||
window.Silverlight = {};
|
||||
}
|
||||
|
||||
// Silverlight control instance counter for memory mgt
|
||||
Silverlight._silverlightCount = 0;
|
||||
Silverlight.fwlinkRoot = 'http://go2.microsoft.com/fwlink/?LinkID=';
|
||||
Silverlight.onGetSilverlight = null;
|
||||
Silverlight.onSilverlightInstalled = function () { window.location.reload(false); };
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
// isInstalled, checks to see if the correct version is installed
|
||||
//////////////////////////////////////////////////////////////////
|
||||
Silverlight.isInstalled = function (version) {
|
||||
var isVersionSupported = false;
|
||||
var container = null;
|
||||
|
||||
try {
|
||||
var control = null;
|
||||
|
||||
try {
|
||||
control = new ActiveXObject('AgControl.AgControl');
|
||||
if (version == null) {
|
||||
isVersionSupported = true;
|
||||
}
|
||||
else if (control.IsVersionSupported(version)) {
|
||||
isVersionSupported = true;
|
||||
}
|
||||
control = null;
|
||||
}
|
||||
catch (e) {
|
||||
var plugin = navigator.plugins["Silverlight Plug-In"];
|
||||
if (plugin) {
|
||||
if (version === null) {
|
||||
isVersionSupported = true;
|
||||
}
|
||||
else {
|
||||
var actualVer = plugin.description;
|
||||
if (actualVer === "1.0.30226.2")
|
||||
actualVer = "2.0.30226.2";
|
||||
var actualVerArray = actualVer.split(".");
|
||||
while (actualVerArray.length > 3) {
|
||||
actualVerArray.pop();
|
||||
}
|
||||
while (actualVerArray.length < 4) {
|
||||
actualVerArray.push(0);
|
||||
}
|
||||
var reqVerArray = version.split(".");
|
||||
while (reqVerArray.length > 4) {
|
||||
reqVerArray.pop();
|
||||
}
|
||||
|
||||
var requiredVersionPart;
|
||||
var actualVersionPart
|
||||
var index = 0;
|
||||
|
||||
|
||||
do {
|
||||
requiredVersionPart = parseInt(reqVerArray[index]);
|
||||
actualVersionPart = parseInt(actualVerArray[index]);
|
||||
index++;
|
||||
}
|
||||
while (index < reqVerArray.length && requiredVersionPart === actualVersionPart);
|
||||
|
||||
if (requiredVersionPart <= actualVersionPart && !isNaN(requiredVersionPart)) {
|
||||
isVersionSupported = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
isVersionSupported = false;
|
||||
}
|
||||
if (container) {
|
||||
document.body.removeChild(container);
|
||||
}
|
||||
|
||||
return isVersionSupported;
|
||||
}
|
||||
Silverlight.WaitForInstallCompletion = function () {
|
||||
if (!Silverlight.isBrowserRestartRequired && Silverlight.onSilverlightInstalled) {
|
||||
try {
|
||||
navigator.plugins.refresh();
|
||||
}
|
||||
catch (e) {
|
||||
}
|
||||
if (Silverlight.isInstalled(null)) {
|
||||
Silverlight.onSilverlightInstalled();
|
||||
}
|
||||
else {
|
||||
setTimeout(Silverlight.WaitForInstallCompletion, 3000);
|
||||
}
|
||||
}
|
||||
}
|
||||
Silverlight.__startup = function () {
|
||||
Silverlight.isBrowserRestartRequired = Silverlight.isInstalled(null);//(!window.ActiveXObject || Silverlight.isInstalled(null));
|
||||
if (!Silverlight.isBrowserRestartRequired) {
|
||||
Silverlight.WaitForInstallCompletion();
|
||||
}
|
||||
if (window.removeEventListener) {
|
||||
window.removeEventListener('load', Silverlight.__startup, false);
|
||||
}
|
||||
else {
|
||||
window.detachEvent('onload', Silverlight.__startup);
|
||||
}
|
||||
}
|
||||
|
||||
if (window.addEventListener) {
|
||||
window.addEventListener('load', Silverlight.__startup, false);
|
||||
}
|
||||
else {
|
||||
window.attachEvent('onload', Silverlight.__startup);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// createObject(); Params:
|
||||
// parentElement of type Element, the parent element of the Silverlight Control
|
||||
// source of type String
|
||||
// id of type string
|
||||
// properties of type String, object literal notation { name:value, name:value, name:value},
|
||||
// current properties are: width, height, background, framerate, isWindowless, enableHtmlAccess, inplaceInstallPrompt: all are of type string
|
||||
// events of type String, object literal notation { name:value, name:value, name:value},
|
||||
// current events are onLoad onError, both are type string
|
||||
// initParams of type Object or object literal notation { name:value, name:value, name:value}
|
||||
// userContext of type Object
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Silverlight.createObject = function (source, parentElement, id, properties, events, initParams, userContext) {
|
||||
var slPluginHelper = new Object();
|
||||
var slProperties = properties;
|
||||
var slEvents = events;
|
||||
|
||||
slPluginHelper.version = slProperties.version;
|
||||
slProperties.source = source;
|
||||
slPluginHelper.alt = slProperties.alt;
|
||||
|
||||
//rename properties to their tag property names
|
||||
if (initParams)
|
||||
slProperties.initParams = initParams;
|
||||
if (slProperties.isWindowless && !slProperties.windowless)
|
||||
slProperties.windowless = slProperties.isWindowless;
|
||||
if (slProperties.framerate && !slProperties.maxFramerate)
|
||||
slProperties.maxFramerate = slProperties.framerate;
|
||||
if (id && !slProperties.id)
|
||||
slProperties.id = id;
|
||||
|
||||
// remove elements which are not to be added to the instantiation tag
|
||||
delete slProperties.ignoreBrowserVer;
|
||||
delete slProperties.inplaceInstallPrompt;
|
||||
delete slProperties.version;
|
||||
delete slProperties.isWindowless;
|
||||
delete slProperties.framerate;
|
||||
delete slProperties.data;
|
||||
delete slProperties.src;
|
||||
delete slProperties.alt;
|
||||
|
||||
|
||||
// detect that the correct version of Silverlight is installed, else display install
|
||||
|
||||
if (Silverlight.isInstalled(slPluginHelper.version)) {
|
||||
//move unknown events to the slProperties array
|
||||
for (var name in slEvents) {
|
||||
if (slEvents[name]) {
|
||||
if (name == "onLoad" && typeof slEvents[name] == "function" && slEvents[name].length != 1) {
|
||||
var onLoadHandler = slEvents[name];
|
||||
slEvents[name] = function (sender) { return onLoadHandler(document.getElementById(id), userContext, sender) };
|
||||
}
|
||||
var handlerName = Silverlight.__getHandlerName(slEvents[name]);
|
||||
if (handlerName != null) {
|
||||
slProperties[name] = handlerName;
|
||||
slEvents[name] = null;
|
||||
}
|
||||
else {
|
||||
throw "typeof events." + name + " must be 'function' or 'string'";
|
||||
}
|
||||
}
|
||||
}
|
||||
slPluginHTML = Silverlight.buildHTML(slProperties);
|
||||
}
|
||||
//The control could not be instantiated. Show the installation prompt
|
||||
else {
|
||||
slPluginHTML = Silverlight.buildPromptHTML(slPluginHelper);
|
||||
}
|
||||
|
||||
// insert or return the HTML
|
||||
if (parentElement) {
|
||||
parentElement.innerHTML = slPluginHTML;
|
||||
}
|
||||
else {
|
||||
return slPluginHTML;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// create HTML that instantiates the control
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
Silverlight.buildHTML = function (slProperties) {
|
||||
var htmlBuilder = [];
|
||||
|
||||
htmlBuilder.push('<object type=\"application/x-silverlight\" data="data:application/x-silverlight,"');
|
||||
if (slProperties.id != null) {
|
||||
htmlBuilder.push(' id="' + slProperties.id + '"');
|
||||
}
|
||||
if (slProperties.width != null) {
|
||||
htmlBuilder.push(' width="' + slProperties.width + '"');
|
||||
}
|
||||
if (slProperties.height != null) {
|
||||
htmlBuilder.push(' height="' + slProperties.height + '"');
|
||||
}
|
||||
htmlBuilder.push(' >');
|
||||
|
||||
delete slProperties.id;
|
||||
delete slProperties.width;
|
||||
delete slProperties.height;
|
||||
|
||||
for (var name in slProperties) {
|
||||
if (slProperties[name]) {
|
||||
htmlBuilder.push('<param name="' + Silverlight.HtmlAttributeEncode(name) + '" value="' + Silverlight.HtmlAttributeEncode(slProperties[name]) + '" />');
|
||||
}
|
||||
}
|
||||
htmlBuilder.push('<\/object>');
|
||||
return htmlBuilder.join('');
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// createObjectEx, takes a single parameter of all createObject parameters enclosed in {}
|
||||
Silverlight.createObjectEx = function (params) {
|
||||
var parameters = params;
|
||||
var html = Silverlight.createObject(parameters.source, parameters.parentElement, parameters.id, parameters.properties, parameters.events, parameters.initParams, parameters.context);
|
||||
if (parameters.parentElement == null) {
|
||||
return html;
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Builds the HTML to prompt the user to download and install Silverlight
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
Silverlight.buildPromptHTML = function (slPluginHelper) {
|
||||
var slPluginHTML = "";
|
||||
var urlRoot = Silverlight.fwlinkRoot;
|
||||
var shortVer = slPluginHelper.version;
|
||||
if (slPluginHelper.alt) {
|
||||
slPluginHTML = slPluginHelper.alt;
|
||||
}
|
||||
else {
|
||||
if (!shortVer) {
|
||||
shortVer = "";
|
||||
}
|
||||
slPluginHTML = "<a href='javascript:Silverlight.getSilverlight(\"{1}\");' style='text-decoration: none;'><img src='{2}' alt='Get Microsoft Silverlight' style='border-style: none'/></a>";
|
||||
slPluginHTML = slPluginHTML.replace('{1}', shortVer);
|
||||
slPluginHTML = slPluginHTML.replace('{2}', urlRoot + '108181');
|
||||
}
|
||||
|
||||
return slPluginHTML;
|
||||
}
|
||||
|
||||
|
||||
Silverlight.getSilverlight = function (version) {
|
||||
if (Silverlight.onGetSilverlight) {
|
||||
Silverlight.onGetSilverlight();
|
||||
}
|
||||
|
||||
var shortVer = "";
|
||||
var reqVerArray = String(version).split(".");
|
||||
if (reqVerArray.length > 1) {
|
||||
var majorNum = parseInt(reqVerArray[0]);
|
||||
if (isNaN(majorNum) || majorNum < 2) {
|
||||
shortVer = "1.0";
|
||||
}
|
||||
else {
|
||||
shortVer = reqVerArray[0] + '.' + reqVerArray[1];
|
||||
}
|
||||
}
|
||||
|
||||
var verArg = "";
|
||||
|
||||
if (shortVer.match(/^\d+\056\d+$/)) {
|
||||
verArg = "&v=" + shortVer;
|
||||
}
|
||||
|
||||
Silverlight.followFWLink("114576" + verArg);
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// Navigates to a url based on fwlinkid
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
Silverlight.followFWLink = function (linkid) {
|
||||
top.location = Silverlight.fwlinkRoot + String(linkid);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// Encodes special characters in input strings as charcodes
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
Silverlight.HtmlAttributeEncode = function (strInput) {
|
||||
var c;
|
||||
var retVal = '';
|
||||
|
||||
if (strInput == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
for (var cnt = 0; cnt < strInput.length; cnt++) {
|
||||
c = strInput.charCodeAt(cnt);
|
||||
|
||||
if (((c > 96) && (c < 123)) ||
|
||||
((c > 64) && (c < 91)) ||
|
||||
((c > 43) && (c < 58) && (c != 47)) ||
|
||||
(c == 95)) {
|
||||
retVal = retVal + String.fromCharCode(c);
|
||||
}
|
||||
else {
|
||||
retVal = retVal + '&#' + c + ';';
|
||||
}
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Default error handling function to be used when a custom error handler is
|
||||
// not present
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Silverlight.default_error_handler = function (sender, args) {
|
||||
var iErrorCode;
|
||||
var errorType = args.ErrorType;
|
||||
|
||||
iErrorCode = args.ErrorCode;
|
||||
|
||||
var errMsg = "\nSilverlight error message \n";
|
||||
|
||||
errMsg += "ErrorCode: " + iErrorCode + "\n";
|
||||
|
||||
|
||||
errMsg += "ErrorType: " + errorType + " \n";
|
||||
errMsg += "Message: " + args.ErrorMessage + " \n";
|
||||
|
||||
if (errorType == "ParserError") {
|
||||
errMsg += "XamlFile: " + args.xamlFile + " \n";
|
||||
errMsg += "Line: " + args.lineNumber + " \n";
|
||||
errMsg += "Position: " + args.charPosition + " \n";
|
||||
}
|
||||
else if (errorType == "RuntimeError") {
|
||||
if (args.lineNumber != 0) {
|
||||
errMsg += "Line: " + args.lineNumber + " \n";
|
||||
errMsg += "Position: " + args.charPosition + " \n";
|
||||
}
|
||||
errMsg += "MethodName: " + args.methodName + " \n";
|
||||
}
|
||||
alert(errMsg);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// Releases event handler resources when the page is unloaded
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
Silverlight.__cleanup = function () {
|
||||
for (var i = Silverlight._silverlightCount - 1; i >= 0; i--) {
|
||||
window['__slEvent' + i] = null;
|
||||
}
|
||||
Silverlight._silverlightCount = 0;
|
||||
if (window.removeEventListener) {
|
||||
window.removeEventListener('unload', Silverlight.__cleanup, false);
|
||||
}
|
||||
else {
|
||||
window.detachEvent('onunload', Silverlight.__cleanup);
|
||||
}
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// Releases event handler resources when the page is unloaded
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
Silverlight.__getHandlerName = function (handler) {
|
||||
var handlerName = "";
|
||||
if (typeof handler == "string") {
|
||||
handlerName = handler;
|
||||
}
|
||||
else if (typeof handler == "function") {
|
||||
if (Silverlight._silverlightCount == 0) {
|
||||
if (window.addEventListener) {
|
||||
window.addEventListener('onunload', Silverlight.__cleanup, false);
|
||||
}
|
||||
else {
|
||||
window.attachEvent('onunload', Silverlight.__cleanup);
|
||||
}
|
||||
}
|
||||
var count = Silverlight._silverlightCount++;
|
||||
handlerName = "__slEvent" + count;
|
||||
|
||||
window[handlerName] = handler;
|
||||
}
|
||||
else {
|
||||
handlerName = null;
|
||||
}
|
||||
return handlerName;
|
||||
}
|
||||
Reference in new issue
Block a user