Jac*_*hea 5 javascript url silverlight silverlight-4.0
在我们的silverlight应用程序中,我们设置浏览器窗口的位置哈希属性,以便为当前控件和请求的查询参数添加书签.这是通过Silverlight通过javascript完成的,如下所示:
var hashCode = "Example.ControlNamespace.ClassName?clientID=62189";
HtmlPage.Window.Eval(string.Format("window.location.hash='{0}'", hashCode));
Run Code Online (Sandbox Code Playgroud)
这种方法运行得很好,但是我们从生产中得到间歇性错误,这种错误会导致堆栈跟踪以该行结束.
System.InvalidOperationException:Eval失败.在System.Windows.Browser.HtmlWindow.Eval(字符串代码)
这只会偶尔发生,但我想知道是什么导致了它.我曾经能够使用IE8复制它,所以我认为没有任何模糊的浏览器导致这种情况.似乎设置哈希有时无效,但我不知道为什么.此外,如果它在托管在安全连接上的重要性,https.
提前致谢.
编辑:我能够再次复制它.调试javascript时,错误是"权限被拒绝".这似乎只发生在页面的第一次加载,所以可能页面没有完成加载,并且在完成之前不允许更改url哈希?
这可能与这里的这个特定问题有关:
在 Silverlight 中设置 HtmlPage.Window.CurrentBookmark 属性时禁止导航。
我看到的行为是,当您在重定向后在 IE 中设置哈希值时,页面会刷新(而不是给您“权限被拒绝”),但也许还有其他情况不允许您这样做,例如,如果您在 HTTPS 下运行。
如果事实证明这是问题所在,我见过的唯一真正的解决方法是检测您是否处于这种情况(即,您在重定向后到达此页面,并且您正在 IE 中运行) ,并在加载 Silverlight 应用程序之前刷新页面(使用 JavaScript)。
| 归档时间: |
|
| 查看次数: |
809 次 |
| 最近记录: |