繁体   English   中英

控制asp.net中的后退按钮URL

[英]Control back button url in asp.net

我希望能够控制后退按钮的历史记录。 如果页面上有任何回发,则“后退”按钮会在历史记录中对这些操作进行计数,但我要执行的操作只是返回上一页。 有没有一种方法可以做到这一点? 我确实查看了history.replaceState(),这行得通吗? 我确实尝试使用onhashchange事件来捕获被单击的后退按钮,但在chrome中似乎完全忽略了它?

首先,您需要了解您是否正在按照HTML5标准进行编码,因为历史记录对象只能在HTML5中进行操作。 由于您正在编码ASP.NET因此知道要支持IE的旧版本是很重要的,而我的意思是版本9之前的版本。

再次取决于control ,因为您无法控制Web浏览器。 请记住,Web是一个开放平台,用户可以导航到她想要的任何地方。 捕获浏览器的“后退”按钮不是一个简单的解决方案,而是很棘手的。 浏览器的点击事件过多,我的建议是开始在Web场景中思考而不是.NET应用程序(我本人来自.NET背景)。

我个人会视情况选择使用pushStatereplaceState 它们是在所有浏览器中实现的方法,实现它们并非易事。 请参阅这篇关于MDN的惊人文章,《 操纵浏览器历史》 您可以轻松地推送新状态,创建新状态并导航到用户浏览器体验中的特定点,并且这是HTML标准的一部分,因此您不会像下面的代码那样简单地破解任何东西:

window.history.back(); // Go back in history
window.history.forward(); //Go forward in history

var stateObj = { foo: "bar" };
history.pushState(stateObj, "page 2", "bar.html");  //Push your new desired state in URL

var stateObj = { foo: "bar" };
history.replaceState(stateObj, "page 2", "bar.html"); // Will use the current object
//insteadof creating another one 

UPDATE :如果要强制导航到HTML,只需使用pushState或replaceState,如下所示:

var enforcedPageToVisit = "
var stateObj = { pageName: "test" };
history.pushState(stateObj, "Page to visit evertime when you click back", enforcedPageToVisit);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM