javascript – 从Silverlight设置URL哈希有时会失败

前端之家收集整理的这篇文章主要介绍了javascript – 从Silverlight设置URL哈希有时会失败前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在我们的silverlight应用程序中,我们设置浏览器窗口的位置哈希属性,以便为当前控件和请求的查询参数添加书签.这是通过Silverlight通过javascript完成的,如下所示:

var hashCode = "Example.ControlNamespace.ClassName?clientID=62189";
HtmlPage.Window.Eval(string.Format("window.location.hash='{0}'",hashCode));

这种方法运行得很好,但是我们从生产中得到间歇性错误,这种错误会导致堆栈跟踪以该行结束.

System.InvalidOperationException:Eval失败.
   在System.Windows.Browser.HtmlWindow.Eval(字符串代码)

这只会偶尔发生,但我想知道是什么导致了它.我曾经能够使用IE8复制它,所以我认为没有任何模糊的浏览器导致这种情况.似乎设置哈希有时无效,但我不知道为什么.此外,如果它在托管在安全连接上的重要性,https.

提前致谢.

编辑:我能够再次复制它.调试javascript时,错误是“权限被拒绝”.这似乎只发生在页面的第一次加载,所以可能页面没有完成加载,并且在完成之前不允许更改url哈希?

最佳答案
这可能与此特定问题有关:

Suppress navigation when setting HtmlPage.Window.CurrentBookmark property in Silverlight.

我看到的行为是,当你在重定向后在IE中设置哈希值时,页面会刷新(而不是给你一个“权限被拒绝”),但也许还有其他情况你不允许这样做,例如,如果您在HTTPS下运行.

如果事实证明这是问题所在,我看到的唯一真正的解决方法是检测你是否处于那种情况下(即,你在重定向后到达了这个页面,并且你在IE中运行),并在加载Silverlight应用程序之前刷新页面(使用JavaScript).

猜你在找的JavaScript相关文章