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

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.ua = null;
  8. Silverlight.available = false;
  9. Silverlight.fwlinkRoot='http://go.microsoft.com/fwlink/?LinkID=';   
  10. ///////////////////////////////////////////////////////////////////////////////
  11. // detectUserAgent Parses UA string and stores relevant data in Silverlight.ua.
  12. ///////////////////////////////////////////////////////////////////////////////
  13. Silverlight.detectUserAgent = function()
  14. {
  15.     var ua = window.navigator.userAgent;
  16.     
  17.     Silverlight.ua = {OS:'Unsupported',Browser:'Unsupported'};
  18.     
  19.     //Silverlight does not support pre-Windows NT platforms
  20.     if (ua.indexOf('Windows NT') >= 0) {
  21.         Silverlight.ua.OS = 'Windows';
  22.     }
  23.     else if (ua.indexOf('PPC Mac OS X') >= 0) {
  24.         Silverlight.ua.OS = 'MacPPC';
  25.     }
  26.     else if (ua.indexOf('Intel Mac OS X') >= 0) {
  27.         Silverlight.ua.OS = 'MacIntel';
  28.     }
  29.     
  30.     if ( Silverlight.ua.OS != 'Unsupported' )
  31.     {
  32.         if (ua.indexOf('MSIE') >= 0) {
  33.             if (navigator.userAgent.indexOf('Win64') == -1)
  34.             {
  35.                 if (parseInt(ua.split('MSIE')[1]) >= 6) {
  36.                     Silverlight.ua.Browser  = 'MSIE';
  37.                 }
  38.                 
  39.             }
  40.         }
  41.         else if (ua.indexOf('Firefox') >= 0) {
  42.             var version = ua.split('Firefox/')[1].split('.');
  43.             var major = parseInt(version[0]);
  44.             if (major >= 2) {
  45.                 Silverlight.ua.Browser = 'Firefox';
  46.             }
  47.             else {
  48.                 var minor = parseInt(version[1]);
  49.                 if ((major == 1) && (minor >= 5)) {
  50.                     Silverlight.ua.Browser  = 'Firefox';
  51.                 }
  52.             }
  53.         }
  54.         
  55.         else if (ua.indexOf('Safari') >= 0) {
  56.             Silverlight.ua.Browser = 'Safari';
  57.         }            
  58.     }
  59. }
  60. // Detect the user agent at script load time
  61. Silverlight.detectUserAgent();
  62. //////////////////////////////////////////////////////////////////
  63. // isInstalled, checks to see if the correct version is installed
  64. //////////////////////////////////////////////////////////////////
  65. Silverlight.isInstalled = function(version)
  66. {
  67.     var isVersionSupported=false;
  68.     var container = null;
  69.     
  70.     try {
  71.         var control = null;
  72.         
  73.         if (Silverlight.ua.Browser == 'MSIE') 
  74.         {
  75.             control = new ActiveXObject('AgControl.AgControl');
  76.         }
  77.         else 
  78.         {
  79.             if ( navigator.plugins["Silverlight Plug-In"] )
  80.             {
  81.                 container = document.createElement('div');
  82.                 document.body.appendChild(container);
  83.                 if ( Silverlight.ua.Browser == "Safari" )
  84.                 {
  85.                     container.innerHTML= '<embed type="application/x-silverlight" />';
  86.                 }
  87.                 else
  88.                 {
  89.                     container.innerHTML= '<object type="application/x-silverlight"  data="data:," />';                    
  90.                 }    
  91.                 control = container.childNodes[0];
  92.             }
  93.         }
  94.         
  95.         document.body.innerHTML;
  96.         
  97.         if ( control.IsVersionSupported(version) )
  98.         {
  99.             isVersionSupported = true;
  100.         }
  101.         
  102.         control = null;
  103.         
  104.         Silverlight.available = true;
  105.     }
  106.     catch (e) {
  107.         isVersionSupported = false;
  108.     }
  109.     if (container) {
  110.         document.body.removeChild(container);
  111.     }
  112.     
  113.     return isVersionSupported;
  114. }
  115. ///////////////////////////////////////////////////////////////////////////////
  116. // createObject();  Params:
  117. // parentElement of type Element, the parent element of the Silverlight Control
  118. // source of type String
  119. // id of type string
  120. // properties of type String, object literal notation { name:value, name:value, name:value},
  121. //     current properties are: width, height, background, framerate, isWindowless, enableHtmlAccess, inplaceInstallPrompt:  all are of type string
  122. // events of type String, object literal notation { name:value, name:value, name:value},
  123. //     current events are onLoad onError, both are type string
  124. // initParams of type Object or object literal notation { name:value, name:value, name:value}
  125. // userContext of type Object
  126. /////////////////////////////////////////////////////////////////////////////////
  127. Silverlight.createObject = function(source, parentElement, id, properties, events, initParams, userContext)
  128. {
  129.     var slPluginHelper = new Object();
  130.     var slProperties = properties;
  131.     var slEvents = events;
  132.     
  133.     slProperties.source = source;    
  134.     slPluginHelper.parentElement = parentElement;
  135.     slPluginHelper.id = Silverlight.HtmlAttributeEncode(id);
  136.     slPluginHelper.width = Silverlight.HtmlAttributeEncode(slProperties.width);
  137.     slPluginHelper.height = Silverlight.HtmlAttributeEncode(slProperties.height);
  138.     slPluginHelper.ignoreBrowserVer = Boolean(slProperties.ignoreBrowserVer);
  139.     slPluginHelper.inplaceInstallPrompt = Boolean(slProperties.inplaceInstallPrompt);
  140.     var reqVerArray = slProperties.version.split(".");
  141.     slPluginHelper.shortVer = reqVerArray[0]+'.'+reqVerArray[1];
  142.     slPluginHelper.version = slProperties.version;
  143.     
  144.     //rename properties to their tag property names
  145.     slProperties.initParams = initParams;
  146.     slProperties.windowless = slProperties.isWindowless;
  147.     slProperties.maxFramerate = slProperties.framerate;
  148.     
  149.     //move unknown events to the slProperties array
  150.     for (var name in slEvents)
  151.     {
  152.         if (slEvents[name] && name != "onLoad" && name != "onError")
  153.         {
  154.             slProperties[name] = slEvents[name];
  155.             slEvents[name] = null;
  156.         }
  157.     }
  158.     
  159.     // remove elements which are not to be added to the instantiation tag
  160.     delete slProperties.width;              
  161.     delete slProperties.height;
  162.     delete slProperties.id;
  163.     delete slProperties.onLoad;
  164.     delete slProperties.onError;
  165.     delete slProperties.ignoreBrowserVer;
  166.     delete slProperties.inplaceInstallPrompt;
  167.     delete slProperties.version;
  168.     delete slProperties.isWindowless;
  169.     delete slProperties.framerate;
  170.     delete slProperties.data;
  171.     delete slProperties.src;
  172.     // detect that the correct version of Silverlight is installed, else display install
  173.     if (Silverlight.isInstalled(slPluginHelper.version))
  174.     {
  175.         // initialize unload event one time
  176.         if (Silverlight._silverlightCount == 0)
  177.         {
  178.             if (window.addEventListener) {
  179.                 window.addEventListener('onunload', Silverlight.__cleanup , false);
  180.             }
  181.             else {
  182.                 window.attachEvent('onunload', Silverlight.__cleanup );
  183.             }
  184.         }
  185.         
  186.         var count = Silverlight._silverlightCount++;
  187.         
  188.         slProperties.onLoad = '__slLoad' + count;
  189.         slProperties.onError = '__slError' + count;
  190.         
  191.         //add the onLoad handler if one exists
  192.         window[slProperties.onLoad] = function(sender)
  193.         {
  194.             if ( slEvents.onLoad)
  195.             {
  196.                 slEvents.onLoad(document.getElementById(slPluginHelper.id), userContext, sender);
  197.             }
  198.         };
  199.         
  200.         //add the error handler if one exists. Otherwise, add the default error handler.
  201.         window[slProperties.onError] = function(sender, e)
  202.         {
  203.             if (slEvents.onError)
  204.             {
  205.                 slEvents.onError(sender, e);
  206.             }
  207.             else
  208.             {
  209.                 Silverlight.default_error_handler(sender, e);
  210.             }
  211.         }
  212.         slPluginHTML = Silverlight.buildHTML(slPluginHelper, slProperties);
  213.     }
  214.     //The control could not be instantiated. Show the installation prompt
  215.     else 
  216.     {
  217.         slPluginHTML = Silverlight.buildPromptHTML(slPluginHelper);
  218.     }
  219.     // insert or return the HTML
  220.     if(slPluginHelper.parentElement)
  221.     {
  222.         slPluginHelper.parentElement.innerHTML = slPluginHTML;
  223.     }
  224.     else
  225.     {
  226.         return slPluginHTML;
  227.     }
  228. }
  229. ///////////////////////////////////////////////////////////////////////////////
  230. //  detect to see if this is a supported user agent
  231. ///////////////////////////////////////////////////////////////////////////////
  232. Silverlight.supportedUserAgent = function(version)
  233. {        
  234.     var ua = Silverlight.ua;
  235.     //detect all unsupported platform combinations (IE on Mac, Safari on Win)
  236.     var noSupport = (   ua.OS == 'Unsupported' ||                           //Unsupported OS
  237.                         ua.Browser == 'Unsupported' ||                      //Unsupported Browser
  238.                         (ua.OS == 'Windows' && ua.Browser == 'Safari') ||   //Safari is not supported on Windows
  239.                         (ua.OS.indexOf('Mac') >= 0 && ua.Browser == 'IE')   //IE is not supported on Mac
  240.                             );
  241. //<parsingTag><noSilverlight.Debug.js>
  242.     if (version=='1.1')
  243.     {
  244.         //add PPC to unsupported list
  245.         return (!(noSupport || ua.OS == 'MacPPC' ));
  246.     }
  247.     else
  248.     {
  249. //<parsingTag></noSilverlight.Debug.js>
  250.         return (!noSupport);  
  251. //<parsingTag><noSilverlight.Debug.js>  
  252.     }    
  253. //<parsingTag></noSilverlight.Debug.js>
  254. }
  255. ///////////////////////////////////////////////////////////////////////////////
  256. //
  257. //  create HTML that instantiates the control
  258. //
  259. ///////////////////////////////////////////////////////////////////////////////
  260. Silverlight.buildHTML = function(slPluginHelper, slProperties)
  261. {
  262.     var htmlBuilder = [];
  263.     var start ;
  264.     var pre ;
  265.     var dur ;
  266.     var post ;
  267.     var end ;
  268.     
  269.     if (Silverlight.ua.Browser=='Safari')
  270.     {
  271.         htmlBuilder.push('<embed ');
  272.         start = '';
  273.         pre = ' ';
  274.         dur = '="';
  275.         post = '"';
  276.         end = ' type="application/x-silverlight"/>' + "<iframe style='visibility:hidden;height:0;width:0'/>";
  277.     }
  278.     else
  279.     {
  280.         htmlBuilder.push('<object type="application/x-silverlight" data="data:,"');
  281.         start = '>';
  282.         pre = ' <param name="';
  283.         dur = '" value="';
  284.         post = '" />';
  285.         end = '</object>';        
  286.     }
  287.     htmlBuilder.push(' id="' + slPluginHelper.id + '" width="' + slPluginHelper.width + '" height="' +slPluginHelper.height + '" '+start);
  288.     
  289.     for (var name in slProperties)
  290.     {
  291.         if (slProperties[name])
  292.         {
  293.             htmlBuilder.push(pre+Silverlight.HtmlAttributeEncode(name)+dur+Silverlight.HtmlAttributeEncode(slProperties[name])+post);
  294.         }
  295.     }
  296.     htmlBuilder.push(end);
  297.     return htmlBuilder.join('');
  298. }
  299. ///////////////////////////////////////////////////////////////////////////////
  300. //
  301. //  Default error handling function to be used when a custom error handler is
  302. //  not present
  303. //
  304. ///////////////////////////////////////////////////////////////////////////////
  305. Silverlight.default_error_handler = function (sender, args)
  306. {
  307.     var iErrorCode;
  308.     var errorType = args.ErrorType;
  309.     iErrorCode = args.ErrorCode;
  310.     var errMsg = "nSilverlight error message     n" ;
  311.     errMsg += "ErrorCode: "+ iErrorCode + "n";
  312.     errMsg += "ErrorType: " + errorType + "       n";
  313.     errMsg += "Message: " + args.ErrorMessage + "     n";
  314.     if (errorType == "ParserError")
  315.     {
  316.         errMsg += "XamlFile: " + args.xamlFile + "     n";
  317.         errMsg += "Line: " + args.lineNumber + "     n";
  318.         errMsg += "Position: " + args.charPosition + "     n";
  319.     }
  320.     else if (errorType == "RuntimeError")
  321.     {
  322.         if (args.lineNumber != 0)
  323.         {
  324.             errMsg += "Line: " + args.lineNumber + "     n";
  325.             errMsg += "Position: " +  args.charPosition + "     n";
  326.         }
  327.         errMsg += "MethodName: " + args.methodName + "     n";
  328.     }
  329.     alert (errMsg);
  330. }
  331. // createObjectEx, takes a single parameter of all createObject parameters enclosed in {}
  332. Silverlight.createObjectEx = function(params)
  333. {
  334.     var parameters = params;
  335.     var html = Silverlight.createObject(parameters.source, parameters.parentElement, parameters.id, parameters.properties, parameters.events, parameters.initParams, parameters.context);
  336.     if (parameters.parentElement == null)
  337.     {
  338.         return html;
  339.     }
  340. }
  341. ///////////////////////////////////////////////////////////////////////////////////////////////
  342. // Builds the HTML to prompt the user to download and install Silverlight
  343. ///////////////////////////////////////////////////////////////////////////////////////////////
  344. Silverlight.buildPromptHTML = function(slPluginHelper)
  345. {
  346.     var slPluginHTML = null;
  347.     var urlRoot=Silverlight.fwlinkRoot;
  348.     var OS = Silverlight.ua.OS;
  349.     var target = '92822';  // 92822 is the 'unsupported platform' linkid
  350.     var image;
  351.     var L_ImageTitle_Text = '拥有 Microsoft Silverlight';
  352.     var L_CLCID_Text = '0x804';  
  353.     
  354.     //<parsingTag><noSilverlight.Debug.js> 
  355.     if (slPluginHelper.shortVer == '1.1')
  356.     {
  357.         slPluginHelper.inplaceInstallPrompt = false;
  358.     }
  359.     //<parsingTag></noSilverlight.Debug.js> 
  360.     
  361.     if (slPluginHelper.inplaceInstallPrompt)
  362.     {
  363.         var center = '98109';
  364.         var bottom;
  365.         //upgrade image, when available
  366.         if ( Silverlight.available )
  367.         {
  368.             image = '96189';
  369.             bottom = '96422';
  370.         }
  371.         else
  372.         {
  373.             image = '96188';
  374.             bottom = '96422';
  375.         }
  376.         var EULA = '93481';     // unsupported platform EULA linkid
  377.         var Privacy = '93483';  // unsupported platform Privacy LinkID
  378.         
  379.         if (OS=='Windows')
  380.         {
  381.             target = '92799';
  382.             EULA = '92803';
  383.             Privacy = '92805'; 
  384.         }
  385.         else if (OS=='MacIntel')
  386.         {
  387.             target = '92808';
  388.             EULA = '92804';
  389.             Privacy = '92806';
  390.         }
  391.         else if (OS=='MacPPC')
  392.         {
  393.             target = '92807';
  394.             EULA = '92815';
  395.             Privacy = '92816';
  396.         }
  397.     var L_DirectPromptEULA_Text = '单击<b></b>“拥有 Microsoft Silverlight”进入更佳的用户体验,并表示您接受<br /><a title="Silverlight 许可协议" href="{2}" target="_top" style="text-decoration: underline; color: #96C5E1"><b>Silverlight 许可协议</b></a>';
  398.     var L_DirectPromptPrivacy_Text = 'Silverlight 会自动进行更新。<a title="Silverlight 隐私声明" href="{3}" target="_top" style="text-decoration: underline; color: #96C5E1"><b>了解更多信息</b></a>';
  399.     slPluginHTML =  '<table border="0" cellpadding="0" cellspacing="0" width="206px"><tr><td><img style="display: block; cursor: pointer; border= 0;" title="' + L_ImageTitle_Text + '" alt="' + L_ImageTitle_Text + '" onclick="javascript:Silverlight.followFWLink({0});" src="{1}" /></td></tr><tr><td style="width: 206px; margin: 0px; background: #FFFFFF; color: #C7C7C7; text-align: left; border-left-style: solid; border-right-style: solid; padding-left: 6px; padding-right: 6px; padding-top: 3px; padding-bottom: 0px; border-width: 2px; border-color: #c7c7bd; font-family: Verdana; font-size: 55%">' + L_DirectPromptEULA_Text + '</td></tr><tr><td><img src="{5}" style="border: 0; display: block;margin-top:0;" /></td></tr><tr><td style="width: 206px; margin: 0px; background: #D8EFF9; color: #C7C7C7; text-align: left; border-left-style: solid; border-right-style: solid; padding-left: 6px; padding-right: 6px; padding-top: 0px; padding-bottom: 2px; border-width: 2px; border-color: #c7c7bd; font-family: Verdana; font-size: 55%">' +L_DirectPromptPrivacy_Text + '</td></tr><tr><td><img alt="" src="{4}" style="margin-top:0;"/></td></tr></table>';
  400.         slPluginHTML = slPluginHTML.replace('{2}', urlRoot+EULA);
  401.         slPluginHTML = slPluginHTML.replace('{3}', urlRoot+Privacy);
  402.         slPluginHTML = slPluginHTML.replace('{4}', urlRoot+bottom);
  403.         slPluginHTML = slPluginHTML.replace('{5}', urlRoot+center);
  404.     }
  405.     else
  406.     {       
  407. //<parsingTag><noSilverlight.Debug.js> 
  408.         if (slPluginHelper.shortVer == '1.1')
  409.         {
  410.             target = '92821'; //this is the unsupported platform target for 1.1
  411.                     //upgrade image, when available
  412.             if ( Silverlight.available )
  413.             {
  414.                 image = '94378';
  415.             }
  416.             else
  417.             {
  418.                 image = '92810';
  419.             }
  420.             
  421.             if (OS=='Windows')
  422.             {
  423.                 target = '92809';
  424.             }
  425.             else if (OS=='MacIntel')
  426.             {
  427.                 target = '92813';
  428.             }
  429.             // PPC Mac is not supported. Thus, the unsupported platform links will be used.
  430.         }
  431.         else
  432.         {
  433. //<parsingTag></noSilverlight.Debug.js>
  434.             if ( Silverlight.available )
  435.             {
  436.                 image = '94377';
  437.             }
  438.             else
  439.             {
  440.                 image = '92801';
  441.             }
  442.             if (OS=='Windows')
  443.             {
  444.                 target = '92800';
  445.             }
  446.             else if (OS=='MacIntel')
  447.             {
  448.                 target = '92812';
  449.             }
  450.             else if (OS=='MacPPC')
  451.             {
  452.                 target = '92811';
  453.             }
  454. //<parsingTag><noSilverlight.Debug.js>
  455.         }
  456. //<parsingTag></noSilverlight.Debug.js>
  457.         slPluginHTML = '<div style="display:block; width: 205px; height: 67px;"><img onclick="javascript:Silverlight.followFWLink({0});" style="border:0; cursor:pointer" src="{1}" title="' + L_ImageTitle_Text + '" alt="' + L_ImageTitle_Text + '"/></div>';
  458.     }
  459.     slPluginHTML = slPluginHTML.replace('{0}', target );
  460.     slPluginHTML = slPluginHTML.replace('{1}', urlRoot+image+'&amp;clcid='+L_CLCID_Text);
  461.     return slPluginHTML;
  462. }
  463. ///////////////////////////////////////////////////////////////////////////////////////////////
  464. /// Releases event handler resources when the page is unloaded
  465. ///////////////////////////////////////////////////////////////////////////////////////////////
  466. Silverlight.__cleanup = function ()
  467. {
  468.     for (var i = Silverlight._silverlightCount - 1; i >= 0; i--) {
  469.         window['__slLoad' + i] = null;
  470.         window['__slError' + i] = null;
  471.     }
  472.     if (window.removeEventListener) { 
  473.        window.removeEventListener('unload', Silverlight.__cleanup , false);
  474.     }
  475.     else { 
  476.         window.detachEvent('onunload', Silverlight.__cleanup );
  477.     }
  478. }
  479. ///////////////////////////////////////////////////////////////////////////////////////////////
  480. /// Navigates to a url based on fwlinkid
  481. ///////////////////////////////////////////////////////////////////////////////////////////////
  482. Silverlight.followFWLink = function(linkid)
  483. {
  484.     top.location=Silverlight.fwlinkRoot+String(linkid);
  485. }
  486. ///////////////////////////////////////////////////////////////////////////////////////////////
  487. /// Encodes special characters in input strings as charcodes
  488. ///////////////////////////////////////////////////////////////////////////////////////////////
  489. Silverlight.HtmlAttributeEncode = function( strInput )
  490. {
  491. var c;
  492. var retVal = '';
  493.     if(strInput == null)
  494. {
  495.     return null;
  496.     }
  497. for(var cnt = 0; cnt < strInput.length; cnt++)
  498. {
  499. c = strInput.charCodeAt(cnt);
  500. if (( ( c > 96 ) && ( c < 123 ) ) ||
  501. ( ( c > 64 ) && ( c < 91 ) ) ||
  502. ( ( c > 43 ) && ( c < 58 ) && (c!=47)) ||
  503. ( c == 95 ))
  504. {
  505. retVal = retVal + String.fromCharCode(c);
  506. }
  507. else
  508. {
  509. retVal = retVal + '&#' + c + ';';
  510. }
  511. }
  512. return retVal;
  513. }