2013-03-07 110 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> 
相關問題