2013-06-02 25 views
3

我張貼在一個jQuery淡入的結束形式。JQUERY緩存如果後退按鈕發佈形成後 - JQUERY淡入仍然visable

  • 當用戶點擊提交 - 一個DIV「SWITCHING_SCREENS」 - 用它 消息時,通過jQuery褪色並覆蓋表單頁面。
  • 一旦該分區中完全消失 - JavaScript,然後再上崗的形式 另一頁。

的Javascript:

Theform = document.getElementById('customers_form'); 

    $('#SWITCHING_SCREENS').fadeIn('slow', function(){ 
     Theform.submit(); 
    }); 

這一切運作良好,我與提交或其他沒有任何問題。 但是,當用戶點擊瀏覽器後退按鈕(firefox)時,SWITCHING_SCREENS仍然可見。

我看到表單元素的後退按鈕緩存 - 但預計jQuery來重置後退按鈕。或者我只是沒有想到它會緩存。

  • 它好像已經緩存?
  • 已jQuery的緩存DIV的這種狀態?

我曾嘗試:

的Javascript:

Theform = document.getElementById('customers_form'); 

$('#SWITCHING_SCREENS').fadeIn('slow', function(){ 
    Theform.submit(); 
    $('#SWITCHING_SCREENS').hide(); 
}); 

,這確實解決了DIV的高速緩存中的「淡入」狀態後退按鈕使用瀏覽器的時候...

但它還會刪除之前的頁面實際上切換到發佈頁面的DIV 。我希望div在頁面發佈到下一頁時保持可見 - 並且如果訪問者點擊後退按鈕將會消失。

這似乎只發生在Firefox。

謝謝。 此致敬禮。

回答

2

可以使用.unload()沒有具體攔截後退按鈕但無論如何這卸載當前頁面。它可以是任何點擊鏈路前進按鈕基於瀏覽器後退按鈕。當用戶導航 遠離頁

$(window).unload(function() { $('#SWITCHING_SCREENS').hide(); }); 

卸載事件被髮送到窗口元件。這可能意味着許多事情之一。用戶可以點擊一個鏈接離開該頁面,或者在 地址欄中輸入一個新的URL。前進和後退按鈕將觸發事件。 關閉瀏覽器窗口將導致事件被觸發。即使 頁面重新加載也會首先創建一個卸載事件。

+0

這是一個很好的解決方案。 謝謝:) – KDawg

0

將此代碼加入到頁面上。

$(document).ready(function({ 
    $('#SWITCHING_SCREENS').hide(); 
    ..... rest of your code will go here......... 
})); 
+0

這個答案應該可以工作,看起來FF是從jQuery fadeIn中緩存存儲在元素中的CSS。通過在文檔就緒事件中隱藏元素,您將從fadeIn緩存中刪除CSS。 – Justin3o9

1

並不是說jQuery已經緩存了任何東西,而是瀏覽器緩存了頁面的狀態,就像用戶上次看到的一樣。這是正常的,有些人認爲是可取的行爲。例如,如果您滾動到頁面底部,然後單擊一個鏈接(將您帶到新頁面),然後點擊後退按鈕,瀏覽器甚至可能會將您帶到頁面的底部,就在您的位置留下它。

所以我建議是這樣的:

$('#SWITCHING_SCREENS').fadeIn('slow', function(){ 
    $(window).unload(function() { $('#SWITCHING_SCREENS').hide(); }); 
    Theform.submit(); 
}); 
0

嘿即時通訊不是100%肯定你的努力做,但是這可能會幫助,但它聽起來像你希望用戶可以在1表單頁面命中提交2.等待表格3.然後轉移到另一個頁面

$(document).on('click', 'a', function(event){ 

     $.post(
      $(this).attr('href'), 
      {url: "url", 
      dataType: "html", 
      }, 
      function(data) 
      { 

     $('#content').fadeOut(function(){ 
     $(this).replaceWith(data).fadeIn(); 

     }); 
     } 
     ); 
     return false; 
    }); 

這將從服務器提交表單加載新的頁面沒有記錄的網址,如果你擊中背部或轉寄它重新加載頁面只顯示形式

PHP端

<?php 
// Determing if this is an include or ajax call 
if($_POST["url"] = $_POST['url']){ ?> 

<div id="content"> 
new page data 
</div> 

<?php }else{ ?> 


<div id="content"> 

your form </div> 

<?php } ?> 

這個我更多的是「黑客」對不起新的jQuery。