Silverlight.js
上传用户:wenllgg125
上传日期:2020-04-09
资源大小:7277k
文件大小:21k
源码类别:

SCSI/ASPI

开发平台:

Others

  1. if (!window.Silverlight)
  2. {
  3.     window.Silverlight = { };
  4. }
  5. // Silverlight control instance counter for memory mgt
  6. Silverlight._silverlightCount = 0;
  7. Silverlight.fwlinkRoot='http://go2.microsoft.com/fwlink/?LinkID=';  
  8. Silverlight.onGetSilverlight = null;
  9. Silverlight.onSilverlightInstalled = function () {window.location.reload(false);};
  10. //////////////////////////////////////////////////////////////////
  11. // isInstalled, checks to see if the correct version is installed
  12. //////////////////////////////////////////////////////////////////
  13. Silverlight.isInstalled = function(version)
  14. {
  15.     var isVersionSupported=false;
  16.     var container = null;
  17.     
  18.     try 
  19.     {
  20.         var control = null;
  21.         
  22.         try
  23.         {
  24.             control = new ActiveXObject('AgControl.AgControl');
  25.             if ( version == null )
  26.             {
  27.                 isVersionSupported = true;
  28.             }
  29.             else if ( control.IsVersionSupported(version) )
  30.             {
  31.                 isVersionSupported = true;
  32.             }
  33.             control = null;
  34.         }
  35.         catch (e)
  36.         {
  37.             var plugin = navigator.plugins["Silverlight Plug-In"] ;
  38.             if ( plugin )
  39.             {
  40.                 if ( version === null )
  41.                 {
  42.                     isVersionSupported = true;
  43.                 }
  44.                 else
  45.                 {
  46.                     var actualVer = plugin.description;
  47.                     if ( actualVer === "1.0.30226.2")
  48.                         actualVer = "2.0.30226.2";
  49.                     var actualVerArray =actualVer.split(".");
  50.                     while ( actualVerArray.length > 3)
  51.                     {
  52.                         actualVerArray.pop();
  53.                     }
  54.                     while ( actualVerArray.length < 4)
  55.                     {
  56.                         actualVerArray.push(0);
  57.                     }
  58.                     var reqVerArray = version.split(".");
  59.                     while ( reqVerArray.length > 4)
  60.                     {
  61.                         reqVerArray.pop();
  62.                     }
  63.                     
  64.                     var requiredVersionPart ;
  65.                     var actualVersionPart
  66.                     var index = 0;
  67.                     
  68.                     
  69.                     do
  70.                     {
  71.                         requiredVersionPart = parseInt(reqVerArray[index]);
  72.                         actualVersionPart = parseInt(actualVerArray[index]);
  73.                         index++;
  74.                     }
  75.                     while (index < reqVerArray.length && requiredVersionPart === actualVersionPart);
  76.                     
  77.                     if ( requiredVersionPart <= actualVersionPart && !isNaN(requiredVersionPart) )
  78.                     {
  79.                         isVersionSupported = true;
  80.                     }
  81.                 }
  82.             }
  83.         }
  84.     }
  85.     catch (e) 
  86.     {
  87.         isVersionSupported = false;
  88.     }
  89.     if (container) 
  90.     {
  91.         document.body.removeChild(container);
  92.     }
  93.     
  94.     return isVersionSupported;
  95. }
  96. Silverlight.WaitForInstallCompletion = function()
  97. {
  98.     if ( ! Silverlight.isBrowserRestartRequired && Silverlight.onSilverlightInstalled )
  99.     {
  100.         try
  101.         {
  102.             navigator.plugins.refresh();
  103.         }
  104.         catch(e)
  105.         {
  106.         }
  107.         if ( Silverlight.isInstalled(null) )
  108.         {
  109.             Silverlight.onSilverlightInstalled();
  110.         }
  111.         else
  112.         {
  113.               setTimeout(Silverlight.WaitForInstallCompletion, 3000);
  114.         }    
  115.     }
  116. }
  117. Silverlight.__startup = function()
  118. {
  119.     Silverlight.isBrowserRestartRequired = Silverlight.isInstalled(null);//(!window.ActiveXObject || Silverlight.isInstalled(null));
  120.     if ( !Silverlight.isBrowserRestartRequired)
  121.     {
  122.         Silverlight.WaitForInstallCompletion();
  123.     }
  124.     if (window.removeEventListener) { 
  125.        window.removeEventListener('load', Silverlight.__startup , false);
  126.     }
  127.     else { 
  128.         window.detachEvent('onload', Silverlight.__startup );
  129.     }
  130. }
  131. ///////////////////////////////////////////////////////////////////////////////
  132. // createObject();  Params:
  133. // parentElement of type Element, the parent element of the Silverlight Control
  134. // source of type String
  135. // id of type string
  136. // properties of type String, object literal notation { name:value, name:value, name:value},
  137. //     current properties are: width, height, background, framerate, isWindowless, enableHtmlAccess, inplaceInstallPrompt:  all are of type string
  138. // events of type String, object literal notation { name:value, name:value, name:value},
  139. //     current events are onLoad onError, both are type string
  140. // initParams of type Object or object literal notation { name:value, name:value, name:value}
  141. // userContext of type Object
  142. /////////////////////////////////////////////////////////////////////////////////
  143. Silverlight.createObject = function(source, parentElement, id, properties, events, initParams, userContext)
  144. {
  145.     var slPluginHelper = new Object();
  146.     var slProperties = properties;
  147.     var slEvents = events;
  148.     
  149.     slPluginHelper.version = slProperties.version;
  150.     slProperties.source = source;    
  151.     slPluginHelper.alt = slProperties.alt;
  152.     
  153.     //rename properties to their tag property names
  154.     if ( initParams )
  155.         slProperties.initParams = initParams;
  156.     if ( slProperties.isWindowless && !slProperties.windowless)
  157.         slProperties.windowless = slProperties.isWindowless;
  158.     if ( slProperties.framerate && !slProperties.maxFramerate)
  159.         slProperties.maxFramerate = slProperties.framerate;
  160.     if ( id && !slProperties.id)
  161.         slProperties.id = id;
  162.     
  163.     // remove elements which are not to be added to the instantiation tag
  164.     delete slProperties.ignoreBrowserVer;
  165.     delete slProperties.inplaceInstallPrompt;
  166.     delete slProperties.version;
  167.     delete slProperties.isWindowless;
  168.     delete slProperties.framerate;
  169.     delete slProperties.data;
  170.     delete slProperties.src;
  171.     delete slProperties.alt;
  172.     // detect that the correct version of Silverlight is installed, else display install
  173.     if (Silverlight.isInstalled(slPluginHelper.version))
  174.     {
  175.         //move unknown events to the slProperties array
  176.         for (var name in slEvents)
  177.         {
  178.             if ( slEvents[name])
  179.             {
  180.                 if ( name == "onLoad" && typeof slEvents[name] == "function" && slEvents[name].length != 1 )
  181.                 {
  182.                     var onLoadHandler = slEvents[name];
  183.                     slEvents[name]=function (sender){ return onLoadHandler(document.getElementById(id), userContext, sender)};
  184.                 }
  185.                 var handlerName = Silverlight.__getHandlerName(slEvents[name]);
  186.                 if ( handlerName != null )
  187.                 {
  188.                     slProperties[name] = handlerName;
  189.                     slEvents[name] = null;
  190.                 }
  191.                 else
  192.                 {
  193.                     throw "typeof events."+name+" must be 'function' or 'string'";
  194.                 }
  195.             }
  196.         }
  197.         slPluginHTML = Silverlight.buildHTML(slProperties);
  198.     }
  199.     //The control could not be instantiated. Show the installation prompt
  200.     else 
  201.     {
  202.         slPluginHTML = Silverlight.buildPromptHTML(slPluginHelper);
  203.     }
  204.     // insert or return the HTML
  205.     if(parentElement)
  206.     {
  207.         parentElement.innerHTML = slPluginHTML;
  208.     }
  209.     else
  210.     {
  211.         return slPluginHTML;
  212.     }
  213. }
  214. ///////////////////////////////////////////////////////////////////////////////
  215. //
  216. //  create HTML that instantiates the control
  217. //
  218. ///////////////////////////////////////////////////////////////////////////////
  219. Silverlight.buildHTML = function( slProperties)
  220. {
  221.     var htmlBuilder = [];
  222.     htmlBuilder.push('<object type="application/x-silverlight" data="data:application/x-silverlight,"');
  223.     if ( slProperties.id != null )
  224.     {
  225.         htmlBuilder.push(' id="' + slProperties.id + '"');
  226.     }
  227.     if ( slProperties.width != null )
  228.     {
  229.         htmlBuilder.push(' width="' + slProperties.width+ '"');
  230.     }
  231.     if ( slProperties.height != null )
  232.     {
  233.         htmlBuilder.push(' height="' + slProperties.height + '"');
  234.     }
  235.     htmlBuilder.push(' >');
  236.     
  237.     delete slProperties.id;
  238.     delete slProperties.width;
  239.     delete slProperties.height;
  240.     
  241.     for (var name in slProperties)
  242.     {
  243.         if (slProperties[name])
  244.         {
  245.             htmlBuilder.push('<param name="'+Silverlight.HtmlAttributeEncode(name)+'" value="'+Silverlight.HtmlAttributeEncode(slProperties[name])+'" />');
  246.         }
  247.     }
  248.     htmlBuilder.push('</object>');
  249.     return htmlBuilder.join('');
  250. }
  251. // createObjectEx, takes a single parameter of all createObject parameters enclosed in {}
  252. Silverlight.createObjectEx = function(params)
  253. {
  254.     var parameters = params;
  255.     var html = Silverlight.createObject(parameters.source, parameters.parentElement, parameters.id, parameters.properties, parameters.events, parameters.initParams, parameters.context);
  256.     if (parameters.parentElement == null)
  257.     {
  258.         return html;
  259.     }
  260. }
  261. ///////////////////////////////////////////////////////////////////////////////////////////////
  262. // Builds the HTML to prompt the user to download and install Silverlight
  263. ///////////////////////////////////////////////////////////////////////////////////////////////
  264. Silverlight.buildPromptHTML = function(slPluginHelper)
  265. {
  266.     var slPluginHTML = "";
  267.     var urlRoot = Silverlight.fwlinkRoot;
  268.     var shortVer = slPluginHelper.version ;
  269.     if ( slPluginHelper.alt )
  270.     {
  271.         slPluginHTML = slPluginHelper.alt;
  272.     }
  273.     else
  274.     {
  275.         if (! shortVer )
  276.         {
  277.             shortVer="";
  278.         }
  279.         slPluginHTML = "<a href='javascript:Silverlight.getSilverlight("{1}");' style='text-decoration: none;'><img src='{2}' alt='Get Microsoft Silverlight' style='border-style: none'/></a>";
  280.         slPluginHTML = slPluginHTML.replace('{1}', shortVer );
  281.         slPluginHTML = slPluginHTML.replace('{2}', urlRoot + '108181');
  282.     }
  283.     
  284.     return slPluginHTML;
  285. }
  286. Silverlight.getSilverlight = function(version)
  287. {
  288.     if (Silverlight.onGetSilverlight )
  289.     {
  290.         Silverlight.onGetSilverlight();
  291.     }
  292.     
  293.     var shortVer = "";
  294.     var reqVerArray = String(version).split(".");
  295.     if (reqVerArray.length > 1)
  296.     {
  297.         var majorNum = parseInt(reqVerArray[0] );
  298.         if ( isNaN(majorNum) || majorNum < 2 )
  299.         {
  300.             shortVer = "1.0";
  301.         }
  302.         else
  303.         {
  304.             shortVer = reqVerArray[0]+'.'+reqVerArray[1];
  305.         }
  306.     }
  307.     
  308.     var verArg = "";
  309.     
  310.     if (shortVer.match(/^d+56d+$/) )
  311.     {
  312.         verArg = "&v="+shortVer;
  313.     }
  314.     
  315.     Silverlight.followFWLink("114576" + verArg);
  316. }
  317. ///////////////////////////////////////////////////////////////////////////////////////////////
  318. /// Navigates to a url based on fwlinkid
  319. ///////////////////////////////////////////////////////////////////////////////////////////////
  320. Silverlight.followFWLink = function(linkid)
  321. {
  322.     top.location=Silverlight.fwlinkRoot+String(linkid);
  323. }
  324. ///////////////////////////////////////////////////////////////////////////////////////////////
  325. /// Encodes special characters in input strings as charcodes
  326. ///////////////////////////////////////////////////////////////////////////////////////////////
  327. Silverlight.HtmlAttributeEncode = function( strInput )
  328. {
  329.       var c;
  330.       var retVal = '';
  331.     if(strInput == null)
  332.       {
  333.           return null;
  334.     }
  335.       
  336.       for(var cnt = 0; cnt < strInput.length; cnt++)
  337.       {
  338.             c = strInput.charCodeAt(cnt);
  339.             if (( ( c > 96 ) && ( c < 123 ) ) ||
  340.                   ( ( c > 64 ) && ( c < 91 ) ) ||
  341.                   ( ( c > 43 ) && ( c < 58 ) && (c!=47)) ||
  342.                   ( c == 95 ))
  343.             {
  344.                   retVal = retVal + String.fromCharCode(c);
  345.             }
  346.             else
  347.             {
  348.                   retVal = retVal + '&#' + c + ';';
  349.             }
  350.       }
  351.       
  352.       return retVal;
  353. }
  354. ///////////////////////////////////////////////////////////////////////////////
  355. //
  356. //  Default error handling function to be used when a custom error handler is
  357. //  not present
  358. //
  359. ///////////////////////////////////////////////////////////////////////////////
  360. Silverlight.default_error_handler = function (sender, args)
  361. {
  362.     var iErrorCode;
  363.     var errorType = args.ErrorType;
  364.     iErrorCode = args.ErrorCode;
  365.     var errMsg = "nSilverlight error message     n" ;
  366.     errMsg += "ErrorCode: "+ iErrorCode + "n";
  367.     errMsg += "ErrorType: " + errorType + "       n";
  368.     errMsg += "Message: " + args.ErrorMessage + "     n";
  369.     if (errorType == "ParserError")
  370.     {
  371.         errMsg += "XamlFile: " + args.xamlFile + "     n";
  372.         errMsg += "Line: " + args.lineNumber + "     n";
  373.         errMsg += "Position: " + args.charPosition + "     n";
  374.     }
  375.     else if (errorType == "RuntimeError")
  376.     {
  377.         if (args.lineNumber != 0)
  378.         {
  379.             errMsg += "Line: " + args.lineNumber + "     n";
  380.             errMsg += "Position: " +  args.charPosition + "     n";
  381.         }
  382.         errMsg += "MethodName: " + args.methodName + "     n";
  383.     }
  384.     alert (errMsg);
  385. }
  386. ///////////////////////////////////////////////////////////////////////////////////////////////
  387. /// Releases event handler resources when the page is unloaded
  388. ///////////////////////////////////////////////////////////////////////////////////////////////
  389. Silverlight.__cleanup = function ()
  390. {
  391.     for (var i = Silverlight._silverlightCount - 1; i >= 0; i--) {
  392.         window['__slEvent' + i] = null;
  393.     }
  394.     Silverlight._silverlightCount = 0;
  395.     if (window.removeEventListener) { 
  396.        window.removeEventListener('unload', Silverlight.__cleanup , false);
  397.     }
  398.     else { 
  399.         window.detachEvent('onunload', Silverlight.__cleanup );
  400.     }
  401. }
  402. ///////////////////////////////////////////////////////////////////////////////////////////////
  403. /// Releases event handler resources when the page is unloaded
  404. ///////////////////////////////////////////////////////////////////////////////////////////////
  405. Silverlight.__getHandlerName = function (handler)
  406. {
  407.     var handlerName = "";
  408.     if ( typeof handler == "string")
  409.     {
  410.         handlerName = handler;
  411.     }
  412.     else if ( typeof handler == "function" )
  413.     {
  414.         if (Silverlight._silverlightCount == 0)
  415.         {
  416.             if (window.addEventListener) 
  417.             {
  418.                 window.addEventListener('onunload', Silverlight.__cleanup , false);
  419.             }
  420.             else 
  421.             {
  422.                 window.attachEvent('onunload', Silverlight.__cleanup );
  423.             }
  424.         }
  425.         var count = Silverlight._silverlightCount++;
  426.         handlerName = "__slEvent"+count;
  427.         
  428.         window[handlerName]=handler;
  429.     }
  430.     else
  431.     {
  432.         handlerName = null;
  433.     }
  434.     return handlerName;
  435. }
  436. function onSilverlightError(sender, args) {
  437.     var appSource = "";
  438.     if (sender != null && sender != 0) {
  439.         appSource = sender.getHost().Source;
  440.     }
  441.     var errorType = args.ErrorType;
  442.     var iErrorCode = args.ErrorCode;
  443.     var errMsg = "Unhandled Error in Silverlight 2 Application " + appSource + "n";
  444.     errMsg += "Code: " + iErrorCode + "    n";
  445.     errMsg += "Category: " + errorType + "       n";
  446.     errMsg += "Message: " + args.ErrorMessage + "     n";
  447.     if (errorType == "ParserError") {
  448.         errMsg += "File: " + args.xamlFile + "     n";
  449.         errMsg += "Line: " + args.lineNumber + "     n";
  450.         errMsg += "Position: " + args.charPosition + "     n";
  451.     }
  452.     else if (errorType == "RuntimeError") {
  453.         if (args.lineNumber != 0) {
  454.             errMsg += "Line: " + args.lineNumber + "     n";
  455.             errMsg += "Position: " + args.charPosition + "     n";
  456.         }
  457.         errMsg += "MethodName: " + args.methodName + "     n";
  458.     }
  459.     alert(errMsg); //throw new Error(errMsg);
  460. }
  461. function onSilverlightError(sender, args) {
  462.     var appSource = "";
  463.     if (sender != null && sender != 0) {
  464.         appSource = sender.getHost().Source;
  465.     }
  466.     var errorType = args.ErrorType;
  467.     var iErrorCode = args.ErrorCode;
  468.     var errMsg = "Unhandled Error in Silverlight 2 Application " + appSource + "n";
  469.     errMsg += "Code: " + iErrorCode + "    n";
  470.     errMsg += "Category: " + errorType + "       n";
  471.     errMsg += "Message: " + args.ErrorMessage + "     n";
  472.     if (errorType == "ParserError") {
  473.         errMsg += "File: " + args.xamlFile + "     n";
  474.         errMsg += "Line: " + args.lineNumber + "     n";
  475.         errMsg += "Position: " + args.charPosition + "     n";
  476.     }
  477.     else if (errorType == "RuntimeError") {
  478.         if (args.lineNumber != 0) {
  479.             errMsg += "Line: " + args.lineNumber + "     n";
  480.             errMsg += "Position: " + args.charPosition + "     n";
  481.         }
  482.         errMsg += "MethodName: " + args.methodName + "     n";
  483.     }
  484.     //throw new Error(errMsg);
  485.     alert(errMsg);
  486.     BOX_remove('silverlightControlHost');
  487. }
  488. function BOX_show(e)
  489. {       //显示
  490.         if(document.getElementById(e)==null){return;}
  491.         BOX_layout(e);
  492.         window.onresize = function(){BOX_layout(e);} //改变窗体重新调整位置
  493.         window.onscroll = function(){BOX_layout(e);} //滚动窗体重新调整位置
  494. }
  495. function BOX_remove(e)
  496. {       //移除
  497.         window.onscroll = null;
  498.         window.onresize = null;
  499.         document.getElementById('BOX_overlay').style.display="none";
  500.         document.getElementById(e).style.display="none";
  501. }
  502. function BOX_layout(e)
  503. {       //调整位置
  504.         var a = document.getElementById(e);
  505.         if (document.getElementById('BOX_overlay')==null){ //判断是否新建遮掩层
  506.             var overlay = document.createElement("div");
  507.             overlay.setAttribute('id','BOX_overlay');
  508.             overlay.onclick=function(){BOX_remove(e);};
  509.             a.parentNode.appendChild(overlay);
  510.         }
  511.         //取客户端左上坐标,宽,高
  512.         var scrollLeft = (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
  513.         var scrollTop = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
  514.         var clientWidth;
  515.        // if (window.innerWidth) {
  516.         //    clientWidth = ((Sys.Browser.agent === Sys.Browser.Safari) ? window.innerWidth : Math.min(window.innerWidth, document.documentElement.clientWidth));
  517.        // } else {
  518.             clientWidth = document.documentElement.clientWidth;
  519.        // }
  520.         var clientHeight;
  521.        // if (window.innerHeight) {
  522.       //      clientHeight = ((Sys.Browser.agent === Sys.Browser.Safari) ? window.innerHeight : Math.min(window.innerHeight, document.documentElement.clientHeight));
  523.        // } else {
  524.             clientHeight = document.documentElement.clientHeight;
  525.        // }
  526.         var bo = document.getElementById('BOX_overlay');
  527.         bo.style.left = scrollLeft+'px';
  528.         bo.style.top = scrollTop+'px';
  529.         bo.style.width = clientWidth+'px';
  530.         bo.style.height = clientHeight+'px';      
  531.         bo.style.display="";
  532.         //Popup窗口定位
  533.         a.style.position = 'absolute';
  534.         a.style.zIndex=101;
  535.         a.style.display="";
  536.         a.style.left = scrollLeft+((clientWidth-a.offsetWidth)/2)+'px';
  537.         a.style.top = scrollTop+((clientHeight-a.offsetHeight)/2)+'px';
  538. }
  539. function isUndefined(variable) {
  540.     return typeof variable == 'undefined' || variable == '[]' ? true : false;
  541. }
  542. //function CreateSilverlight(pluginID, max, rooturl, forumid, authToken) {
  543. //     Silverlight.createObject(
  544. //         rooturl + "silverlight/UploadFile/ClientBin/MultiFileUpload.xap", 
  545. //         $("swfbox"),         
  546. //         pluginID,                         
  547. //         {     
  548. //             width: '500',
  549. //             height: '340',
  550. //             inplaceInstallPrompt: 'true',
  551. //             isWindowless: 'false',
  552. //             background: 'aliceblue',
  553. //             version: '2.0',
  554. //             autoUpgrade: 'true'
  555. //         },
  556. //         {
  557. //             onLoad: onload, 
  558. //             onError: onSilverlightError
  559. //         },        
  560. //         "forumid=" +forumid+",authToken=" +authToken + ",max=" + max,
  561. //         "");
  562. //}
  563. if (window.addEventListener) {
  564.     window.addEventListener('load', Silverlight.__startup, false);
  565. }
  566. else {
  567.     window.attachEvent('onload', Silverlight.__startup);
  568. }