2013-03-07 68 views
0

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

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

警告框提示,当我试图回到了浏览器,但下面的代码不会执行,也许是被执行但没有显示在页面上生效。请提前感谢我的帮助。

+1

[也许这将有助于(http://jsfiddle.net/DerekL/4EJLG/show) – 2013-03-07 08:42:21

+0

您可以使用历史API http://diveintohtml5.info/ history.html,但我不知道它是否在IE中工作。 – jcubic 2013-03-07 08:42:35

+0

@jcubic - IE 10或以上。 – 2013-03-07 08:43:34

回答

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

我不完全理解你想要达到的目标,但是一个可能的解决方案是将用户初始发送到一个html页面,该页面仅用于将用户重新路由到所需页面。当他们点击后退按钮时,它会将它们带到这个重新路由的html页面,基本上把它们放在一个循环中。

0

我使用这个技巧..

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

希望这会帮助你。 :-)

0

这里:

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