【问题标题】:Silverlight Web Part not loading until user clicks on pageSilverlight Web 部件在用户单击页面之前不会加载
【发布时间】:2014-11-09 13:34:30
【问题描述】:

我正在维护一个在 SharePoint 中作为 Web 部件运行的 Silverlight 4 应用程序。但是,我在 Internet Explorer(版本 10 和 11)中加载它时遇到问题。用户必须单击网页或点击选项卡才能实际加载 Silverlight Web 部件。但是,这在 Chrome 中不是问题。最初加载页面时会运行一个 silverlight.js 脚本,但在用户单击或点击页面上的选项卡之前,XAP 不会被调用(在 Fiddler 中)。到目前为止,我已经尝试使用和不使用 ActiveX 加载页面。此外,我尝试使用我自己的 JavaScript 文件运行该页面,以单击并将焦点放在页面中的各种元素上,但到目前为止还没有运气。

我注意到在对以下 Stack Overflow 问题的评论中简要提到了这个问题: Why won't my Silverlight Application load in Internet Explorer?,但我还没有遇到任何解决这个特定问题的方法。

有什么建议吗?

【问题讨论】:

    标签: internet-explorer sharepoint silverlight-4.0 web-parts


    【解决方案1】:

    如果您设置对象标记的高度和宽度或从其 DIV 容器中删除对象标记,我已经阅读,这可以解决问题。如果这对您来说更容易,那么您可能想先尝试一下。

    但是,我用一点 javascript 解决了这个问题。我使用了 JQuery,但您可能可以使用纯 javascript 做类似的事情。

    这是我的代码在修改前的样子:

    <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>
    

    这就是修改后的代码的样子,基本上我只是从#silverlightControlHost DIV中删除了所有内容,然后通过JQuery在页面加载后将所有内容放回DIV:

    <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>
    

    作为参考,我在 IE 8 上没有看到此问题,但在 IE 11 上使用相同版本的 SharePoint、相同版本的 Silverlight、相同的代码、相同的所有内容我遇到了 Silverlight 控件无法加载的问题,直到你点击它应该在的空白处。单击它后,一切都会正常加载。我首先尝试使用 JQuery 单击对象,但没有成功。它需要一个实际的用户来点击它,而不是程序化的点击。上面的 Javascript/JQuery 解决方案解决了这个问题,现在它在页面加载时加载,就像在 IE 8 中一样。我还在 IE 8、IE 11 和 Chrome 版本 42.0.2311.90 m(64 位)中测试了这个修复。我的 Silverlight 应用程序正在加载到 Sharepoint 2010 站点上的 Web 部件中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-04
      • 2021-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多