Silverlight Web Part not loading until user clicks on page

泄露秘密 提交于 2019-12-25 03:45:12

问题


I am maintaining a Silverlight 4 application that runs as Web Part in SharePoint. However, I have an issue with loading it in Internet Explorer (versions 10 & 11). The user must click on the web page or hit tab for the Silverlight web part to actually load. However, this is not an issue in Chrome. There is a silverlight.js script runs when the page initially loads, but it appears (in Fiddler) that the XAP isn't getting called until the user clicks or or hits tabs on the page. So far, I have tried loading the page with and without ActiveX. Also I have tried running the page with my own JavaScript file to click and put focus on various elements in the page, but so far no luck.

I noticed this issue was briefly referenced in a comment on the following Stack Overflow question: Why won't my Silverlight Application load in Internet Explorer?, but I have yet to come across any resolution to this particular issue.

Any suggestions?


回答1:


I've read if you set the height and width of the object tag or remove the object tag from its DIV container that this can solve the issue. If this is easier for you, then you might want to try this first.

However, I solved the issue with a little javascript. I used JQuery, but you could probably do something similar with pure javascript.

This is what my code looked like before the modification:

<div id="silverlightControlHost">
        <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%" id="silverObj">
          <param name="source" value="../MySilverlightApp.xap"/>
          <param name="onError" value="onSilverlightError" />
          <param name="background" value="white" />
          <param name="minRuntimeVersion" value="4.0.50826.0" />
          <param name="autoUpgrade" value="true" />
          <a href="http://www.microsoft.com/getsilverlight/get-started/install/default.aspx" style="text-decoration:none">
              <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
          </a>
        </object>
       <iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe>
</div>

This is what the modified code looks like, basically I just removed all the content from the #silverlightControlHost DIV and then put all the content back into the DIV after the page load via JQuery:

<script type="text/javascript">
  $(document).ready(function() {
    $("#silverlightControlHost").html("<object data='data:application/x-silverlight-2,' type='application/x-silverlight-2' width='100%' height='100%' id='silverObj'><param name='source' value='../MySilverlightApp.xap'/><param name='onError' value='onSilverlightError' /><param name='background' value='white' /><param name='minRuntimeVersion' value='4.0.50826.0' /><param name='autoUpgrade' value='true' /><a href='http://www.microsoft.com/getsilverlight/get-started/install/default.aspx' style='text-decoration:none'><img src='http://go.microsoft.com/fwlink/?LinkId=161376' alt='Get Microsoft Silverlight' style='border-style:none'/></a></object><iframe id='_sl_historyFrame' style='visibility:hidden;height:0px;width:0px;border:0px'></iframe>");
  });
</script>

<div id="silverlightControlHost">

</div>

For reference, I did not see this issue on IE 8 but then on IE 11 using the same version of SharePoint, same version of Silverlight, same code, same everything I was having the issue that the Silverlight control would not load until you click on the empty space where it should be. After I clicked on it, everything would load just fine. I first tried to click on the object using JQuery, but that did not work. It required an actual user to click on it, not a programatic click. The above Javascript/JQuery solution solved this issue and now it loads when the page loads as it did in IE 8. I also tested this fix in both IE 8, IE 11, and Chrome Version 42.0.2311.90 m (64-bit). My Silverlight app is loading in a web part on a Sharepoint 2010 site.



来源:https://stackoverflow.com/questions/25857973/silverlight-web-part-not-loading-until-user-clicks-on-page

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!