我有一个表单,用户可以在其中输入输入。我想防止其他人使用“后退”按钮返回并查看第一个人输入的内容。
我意识到这仅在相同的浏览器等上是一个问题,但有时可能是一个问题。
我同时尝试了Server.Transfer()
和Response.Redirect()
,但都没有阻止。我还尝试将事件代码中后面的提交按钮的事件处理程序中的文本框(asp:TextBox
)文本设置为空,但是由于传输覆盖了该问题,因此它仍然不起作用。
WebForms技术。这是给定的。我正在代码隐藏中做所有事情,并且如果可能的话,也希望从那里解决这个问题。
答案 0 :(得分:1)
从后端清除代码中的数据将为时已晚,因为正如您所说的那样,重定向将在更改发生之前发生。
相反,我建议您在前端使用Javascript,订阅window.onbeforeunload
事件,并在重定向发生之前使用该事件清除页面。
示例实现如下所示:
window.addEventListener("beforeunload", function() {
var inputs = document.getElementsByTagName("input");
//Iterate all <input> elements on the page.
for(var i = 0; i < inputs.length; i++) {
var input = inputs[i];
//Ignore all elements that don't have type="text" or type="password" (we don't want to clear buttons, etc.).
if(["text", "password"].indexOf(input.type.toLowerCase()) < 0) { continue; }
//Clear the element's value.
input.value = "";
}
});
我做了一个简短的测试:在重定向之前,您会注意到文本框已清除,当您通过按“后退”按钮返回时,文本框仍然为空。