代码之家  ›  专栏  ›  技术社区  ›  iCollect.it Ltd

如何停止Silverlight浏览器历史记录导航状态/书签更改?

  •  1
  • iCollect.it Ltd  · 技术社区  · 15 年前

    我们有一个Silverlight Prism项目,复杂的状态信息存储在浏览器书签中。这允许我们共享书签/链接,从而将应用程序还原到完全相同的视觉状态。

    我们无论如何都不想 琐碎的 书签更改(即非导航更改)以生成浏览器历史记录条目。否则浏览器的后退/前进按钮也会进行简单的更改(如简单的列表选择、选项卡选择等)。

    Q: 是否有方法仍然更改浏览器书签URL,但将其从浏览器历史记录中排除,或者(如果失败)是否可以从浏览器历史记录中删除条目?

    我们的视觉状态是优先的,所以我们知道哪些会影响导航,哪些只是装饰。这可以在URL更改之前或之后确定,因此您的答案可以使用这两种情况。我们可以在书签中添加一个特定的标记,表明它不应该被存档,如果这也有助于您的解决方案的话。

    谢谢

    1 回复  |  直到 15 年前
        1
  •  0
  •   iCollect.it Ltd    15 年前

    我还需要检查所有浏览器是否都支持window.location.replace。

    我现在用一个标志调用这个方法,如果我想在浏览器历史记录中忽略书签:

    public void NavigateToBookmark(string bookMarkUrl, bool replaceUrl)
    {
        if (replaceUrl)
        {
            HtmlPage.Window.Invoke("NavReplace", bookMarkUrl);
        }
        else
        {
            HtmlPage.Window.NavigateToBookmark(bookMarkUrl);
        }
    }
    

     function NavReplace(url) {
                var newurl = parent.location.href;
                var index = newurl.indexOf("#");
                if (index > 0) {
                    newurl = newurl.substr(0, newurl.indexOf("#"));
                }
                window.location.replace(newurl + "#" + url);
            }