【问题标题】:How to check browser back button is clicked when child window is opened?打开子窗口时如何检查浏览器后退按钮是否被单击?
【发布时间】:2013-02-21 15:32:15
【问题描述】:

我必须在我们的应用程序中解决一个问题,如果打开子窗口并且用户单击浏览器后退按钮,我需要重定向到询问用户名和密码的页面。
我们有 400 个 aspx 页面,所以我只需要在母版页中进行修改。我有如下代码

function initPage(){
    checkback();
}

这个函数是用外部javascript文件编写的,并在母版页中使用。
checkback 函数包含如下代码

if (document.forms[0].cprotection.value=='1')   
{

   document.forms[0].pagecode.value=0;     
   document.forms[0].act.value='backpressed';
   document.forms[0].submit()
} 

上面的代码对父窗口工作正常,但如果我打开子窗口就不行。
backpressed 是用于签入类文件以重定向到询问用户名和密码的页面的关键字。请帮我解决这个问题。提前致谢

【问题讨论】:

    标签: c# javascript asp.net vb.net


    【解决方案1】:

    您可以在加载子窗口时向会话添加一个变量,如果用户单击返回,您将检查会话以查看子窗口添加到会话的变量是否在任何页面加载函数中都没有,如果它然后正常加载,如果它没有重定向到登录页面。

    【讨论】:

    • 感谢您的回复,我们正在使用无 cookie 会话,因此在我们的应用程序中我们没有使用 Session 变量。在 Javascript 中,我可以对此进行任何修改或根据您的解决方案跟踪 id。我也可以在代码文件中获取浏览器事件
    • @Rakesh B:这让事情变得复杂了。仅为此使用 javascript 似乎是边界跨站点脚本,大多数客户端由于其黑客漏洞而默认阻止它。问题是当用户单击后退按钮时,您使用 javascript 所做的任何更改都将被丢弃,因为您基本上是从头开始重新加载页面。因此,如果不涉及某种服务器端代码,我不确定如何处理这种情况。抱歉,我无法提供更多帮助。
    • 感谢您的建议,我将与我的面板交谈,实际上我们有 480 个 aspx 页面,包括子窗口,所以我们必须在 javascript 中做是要求,无论如何我会看到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多