我们有一个Silverlight Prism项目,其中包含存储在浏览器书签中的复杂状态信息。这允许我们共享书签/链接,将应用程序恢复到完全相同的视觉状态。
但是,我们不希望琐碎的书签更改(即非导航更改)导致浏览器历史记录条目。否则,浏览器后退/前进按钮也会进行简单的更改(例如简单列表选择,选项卡选择等)。
我们的视觉状态是优先考虑的,因此我们知道哪些实际应该影响导航,哪些只是用于装饰。这可以在URL更改之前或之后确定,因此您的答案可以使用任何一种情况。我们可以为书签添加一个特定的标记,表明它不应该存档,如果这也有助于您的解决方案。
谢谢
答案 0 :(得分:0)
我自己创建了一个答案,但不想依赖JavaScript功能。 我还需要检查所有浏览器是否支持window.location.replace。
我现在用一个标志调用这个方法,说我是否想在浏览器历史记录中忽略书签:
public void NavigateToBookmark(string bookMarkUrl, bool replaceUrl)
{
if (replaceUrl)
{
HtmlPage.Window.Invoke("NavReplace", bookMarkUrl);
}
else
{
HtmlPage.Window.NavigateToBookmark(bookMarkUrl);
}
}
然后在Silverlight托管页面中添加此JavaScript:
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);
}