用户点击浏览器后退按钮时如何重新加载当前页面

时间:2013-03-07 08:32:17

标签: javascript asp.net internet-explorer

我可以在用户点击后退按钮时重新加载当前页面。我会告诉你我的问题背景知道我想要这样做的原因。 我有一个asp.net Web应用程序3.5框架,它将生成的pdf文件显示给ajax modalpop。执行此任务并不容易,因为它是由于我遇到的一些跨浏览器问题并设法处理所有这些问题而且只留下了这个问题。我设法在ajax modalpopup中的iframe上显示pdf文件,此设置与Chrome,Firefox,Safari和Opera兼容,但不在IE上。我设法使用response.binarywrite在IE9 64bit上找到解决方案,pdf文件将显示在Adobe Acrobat Reader的新实例(v11和v10)上,但在IE9 32bit上,这不是它呈现pdf的方式,它在当前页面上呈现并且我不想那样,当用户点击浏览器的后退按钮时,它将重定向到访问的最后一页,而不是在我单击按钮以显示pdf的页面上。我知道通过查看浏览器它仍然在当前页面上发生加载pdf的触发器。现在可以通过单击后退按钮重新加载当前页面,并将其重新加载到pdf文件不可见的页面上。请参阅下面的代码,了解到目前为止我所做的工作。

<script type="text/javascript">
  window.onunload = function {
     alert(document.URL);
     window.location = document.URL;
     window.history.go(-1);
  }
</script>

警报框提示当我尝试重新启动浏览器但下面的代码没有执行时,可能它已执行但页面上没有效果。请提前感谢我真的需要帮助。

4 个答案:

答案 0 :(得分:1)

function SetCookie (name, value) {
var argv=SetCookie.arguments;
 var argc=SetCookie.arguments.length;
 var expires=(argc > 2) ? argv[2] : null;
 var path=(argc > 3) ? argv[3] : null;
 var domain=(argc > 4) ? argv[4] : null;
 var secure=(argc > 5) ? argv[5] : false;
 document.cookie=name+"="+escape(value)+
  ((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
((path==null) ? "" : ("; path="+path))+
((domain==null) ? "" : ("; domain="+domain))+
((secure==true) ? "; secure" : "");

}

 function getCookie(c_name)
 {
var c_value = document.cookie;
var c_start = c_value.indexOf(" " + c_name + "=");
if (c_start == -1)
{
    c_start = c_value.indexOf(c_name + "=");
}
if (c_start == -1)
{
    c_value = null;
}
else
{
    c_start = c_value.indexOf("=", c_start) + 1;
    var c_end = c_value.indexOf(";", c_start);
    if (c_end == -1)
    {
        c_end = c_value.length;
    }
    c_value = unescape(c_value.substring(c_start,c_end));
}
return c_value;
 }   




 if (getCookie('first_load'))        
 {
if (getCookie('first_load')==true)
{
    window.location.reload(true); // force refresh page-liste
    SetCookie("first_load",false);
}
 }
  SetCookie("first_load",true);

答案 1 :(得分:0)

我并不完全理解您要实现的目标,但可能的解决方案是将用户最初发送到html页面,其唯一目的是将用户重新路由到所需页面。当他们点击后退按钮时,它会将它们带到这个重新路由的html页面,基本上将它们放在一个循环中。

答案 2 :(得分:0)

我正在使用这种技术..

angular.element(document).ready(function() {
  var State = History.getState();
  //........ now use State variable 
});

希望这会对你有所帮助。 : - )

答案 3 :(得分:0)

这里:

<script>    
history.pushState(null, null, document.URL);
   window.addEventListener('popstate', function () {
   history.pushState(null, null, document.URL);
   location.reload();
});
</script>