【问题标题】:How to reload current page when user click back button of browser用户单击浏览器的后退按钮时如何重新加载当前页面
【发布时间】:2013-03-07 08:32:17
【问题描述】:

当用户单击返回按钮时,我可以重新加载当前页面吗?我会给你一个我的问题的背景,以了解我为什么要这样做。 我有一个 asp.net web 应用程序 3.5 框架,可将生成的 pdf 文件显示到 ajax modalpop。完成这项任务并不容易,因为我遇到了一些跨浏览器问题,并设法处理了所有这些问题,只留下了一个问题。我设法在 ajax modalpopup 内的 iframe 上显示 pdf 文件,此设置与 Chrome、Firefox、Safari 和 Opera 兼容,但在 IE 上不兼容。我设法使用 response.binarywrite 在 IE9 64bit 上找到了一个解决方案,并且 pdf 文件将显示在 Adob​​e 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>

当我尝试返回浏览器但下面的代码没有执行时提示框提示,可能它已执行但对页面没有影响。请我真的需要帮助提前谢谢。

【问题讨论】:

  • 你可以使用 History API diveintohtml5.info/history.html 但我不知道它是否可以在 IE 中使用。
  • @jcubic - IE 10 或更高版本。
  • 如果你想实现你想要的功能,那么你可能想使用 HTML5 History API。对于不支持它的浏览器,还有polyfills 可用。
  • @Derek 我如何在我的项目中使用它。

标签: javascript asp.net internet-explorer


【解决方案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);

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我正在使用这种技术..

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

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

      【讨论】:

        【解决方案4】:

        这里:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-15
          • 2023-02-05
          • 2013-06-23
          • 1970-01-01
          • 1970-01-01
          • 2020-05-02
          相关资源
          最近更新 更多