繁体   English   中英

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

[英]How to reload current page when user click back button of browser

用户单击后退按钮时,我可以重新加载当前页面吗? 我将给您介绍我的问题的背景,以了解我为什么要这样做。 我有一个asp.net Web应用程序3.5框架,该框架将生成的pdf文件显示为ajax modalpop。 执行此任务并不容易,因为这是由于遇到了一些跨浏览器问题,并且设法处理了所有这些问题,而使我只剩下一个问题。 我设法在ajax modalpopup的iframe中显示pdf文件,并且此设置与Chrome,Firefox,Safari和Opera兼容,但在IE上不兼容。 我设法使用response.binarywrite和pdf文件在IE9 64bit上找到了一个解决方案,它将显示在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>

提示框提示,当我尝试返回浏览器但以下代码未执行时,可能已执行,但对页面无效。 请我真的需要帮助,谢谢。

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);

我不完全理解您要实现的目标,但是可能的解决方案是将用户最初发送到html页面,该页面的唯一目的是将用户重新路由到所需页面。 当他们单击“后退”按钮时,会将他们带到此重新路由的html页面,本质上将它们置于循环中。

我正在使用这种技术..

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

希望这会帮助你。 :-)

这里:

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

暂无
暂无

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

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