Silverlight应用程序在IE10页面刷新时消失
更新:有一个解决问题的方法。通过包括以下元标记之一,强制IE10进入兼容模式:Silverlight应用程序在IE10页面刷新时消失,silverlight,internet-explorer,windows-8,refresh,internet-explorer-10,Silverlight,Internet Explorer,Windows 8,Refresh,Internet Explorer 10,更新:有一个解决问题的方法。通过包括以下元标记之一,强制IE10进入兼容模式: <meta http-equiv="x-ua-compatible" content="IE=7" /> <meta http-equiv="x-ua-compatible" content="IE=8" /> 出于各种原因,这并不是一个完美的解决方案,但至少它消除了问题 原始问题: 几个月前,我意识到Windows8上IE10中的Silverlight应用程序存在问题(我还没有尝试W
<meta http-equiv="x-ua-compatible" content="IE=7" />
<meta http-equiv="x-ua-compatible" content="IE=8" />
出于各种原因,这并不是一个完美的解决方案,但至少它消除了问题
原始问题:
几个月前,我意识到Windows8上IE10中的Silverlight应用程序存在问题(我还没有尝试Windows7的IE10预览版)。当承载SL应用程序的asp.net页面首次加载时,一切正常,应用程序按预期加载。如果我立即刷新页面,它也会按预期重新加载。但是:如果我点击Silverlight应用程序,然后点击F5,它就会变成空白。就像插件完全消失了一样。如果我使用Fiddler跟踪请求,我可以看到没有为xap文件发出任何请求。我一直希望这个问题能在IE10的补丁版本中得到解决,但到目前为止一切都没有改变。当我在谷歌上搜索时,我找不到任何关于这个的信息。我似乎不太可能是第一个发现它的人,我很惊讶我没有找到更多的信息。复制该问题:
- 创建新的Silverlight应用程序
- 向MainPage.xaml添加一些内容,比如按钮或其他什么
- 在IE10中运行应用程序(在Win8上)
- 单击Silverlight应用程序中的任意位置。这只是为了关注插件李>
- 刷新页面(F5)
- 结果:Silverlight应用程序未加载,页面为空
- 完成上述步骤后,再多的刷新都不会使应用程序恢复李>
- 完成上述步骤后,如果我在地址栏中重新输入url并按enter键,应用程序将按预期加载李>
- 如果我在IE中启用兼容性视图,应用程序也会按预期加载。当兼容性视图启用时,我所做的任何事情都不会重现该错误李>
在回答您的问题1时,我们的Silverlight应用程序也出现了这种情况。唯一的解决办法是1)重新启动浏览器或2)切换到兼容模式
这显然是ie10中的一个bug 我在IE 10中看到的Silverlight应用程序也存在同样的问题 我已经尝试添加上面建议的IE8兼容性元标记,但这并不能一致地解决问题。它似乎只是断断续续地工作,在说每第五次刷新尝试之后 我所能看到的解决这一问题的唯一方法是强制浏览器模式进入“IE10兼容性视图”,我不认为这可以通过页面内容(元标记等)来实现?我不得不删除IE8兼容性元标记,以便地址栏中的“兼容性视图”按钮可用,然后要求用户单击兼容性按钮,然后该按钮会被网站记住。这导致浏览器进入浏览器模式:“IE10兼容视图”和文档模式:“IE7标准”。然后刷新行为会像预期的那样和以前一样一致地工作 这对我们来说是个大问题。我们已经构建了Silverlight应用程序,浏览器刷新按钮用于刷新应用程序中的页面/内容(用户保持登录状态等)。我们必须要求用户将我们的站点设置为在兼容模式下运行,以使刷新功能按预期工作,这真的很糟糕 请注意,这在Chrome中仍然可以正常工作。因为这个问题,我们可能需要建议我们的用户使用Chrome,这似乎很愚蠢 更新: 解决方法似乎是始终使用JavaScript将Silverlight对象动态加载到其宿主页面 例如
函数onLoad(){
var silverlightControlHost=document.getElementById(“silverlightControlHost”);
silverlightControlHost.innerHTML=“感谢所有解决方案,但这显然是Silverlight插件的一个缺陷
我们已经直接向InternetExplorer开发团队提出了一些问题,他们说这个问题是由外部问题引起的。这不是微软的好答案
无论如何,这次我们的开发人员通过Silverlight开发团队提出了问题,他们仍在等待他们的回应。为了得到他们的良好回应,我们需要让更多的人面对这个问题
您可以在Connect网站上投票,该网站是微软的官方bug报告平台
我们的机票链接是:
干杯
Moh是的,我的一个应用程序也面临同样的问题。如果我在IE 10中打开应用程序的帮助,那么每次我都必须刷新页面才能查看内容
我有两个解决此问题的方法:
1.按ALT键一次
2.在兼容模式下打开IE我以一种非常简单的方式解决了这个问题。我在页面末尾(或在你的silverlight应用程序的where中的object标记之后)编写了一个javascript代码,并将焦点设置为另一个元素,例如链接。例如:
…呜呜呜呜呜呜
var shc=document.getElementById(“silverlightHostControl”);
document.getElementById(“myLink”).focus();
shc变量是无用的,我只是为了澄清。请记住:在解析silverlight应用程序对象标记后,您的javascript代码必须将焦点设置为另一个(但可聚焦)对象,这意味着您的js代码是在silverlight应用程序对象之后编写的。我仍然对Chris提出的解决方案存在问题
不过,这对我来说非常有效:
window.onbeforeunload = function () {
var silverlightControlHost = document.getElementById("silverlightControlHost");
silverlightControlHost.innerHTML = "";
}
我现在已经被微软告知这是IE中的一个已知错误。他们无法告诉我何时会修复,但暗示它可能会在2013年第二季度得到解决。所以这需要一段时间才能解决。仅供参考,我提出了一个Microsoft Connect错误:美国
...
function unloadSilverlight() {
document.getElementById("silverlightControlHost").innerHTML = "";
}
function focusOnSilverlight() {
document.getElementById("silverlightObject").focus();
}
function onLoad() {
window.onbeforeunload = unloadSilverlight;
setTimeout(focusOnSilverlight);
}
</script>
</head>
<body onload=" onLoad() ">
...
window.onbeforeunload = function () {
var silverlightControlHost = document.getElementById("silverlightControlHost");
silverlightControlHost.innerHTML = "";
}