Silverlight.js
上传用户:jxqhsy
上传日期:2020-12-31
资源大小:1793k
文件大小:15k
- 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+ 56d+$/) )
- {
- 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;
- }