簡體   English   中英

使用javascript重置元標記以防止它刷新頁面

[英]Using javascript to reset the meta tag to prevent it from refreshing the page

我們有一個遺留應用程序(經典ASP和ASP.net的混合),它有一些Ajax內容豐富的頁面。期望網站的用戶在頁面上執行一系列任務,可以跨越相當長的時間說,15-30分鍾。

其中一個要求是登錄到站點的用戶在15分鍾不活動后自動注銷。 目前,這是通過使用元標記在頁面中不活動15分鍾后將用戶重定向到注銷頁面來實現的。

<meta name='Refresh' http-equiv="Refresh" content="900;URL=/someurl/logout.asp">

我們遇到的問題是,盡管與服務器進行了許多AJAX交互,瀏覽器仍然認為頁面上沒有任何活動。 因此,在瀏覽器認為不活動的15分鍾后,即使用戶正在做某事,用戶也會自動注銷。

受此留言板帖子的啟發,我們試圖通過使用javascript(JQuery)來解決煩惱

下面將是一個事件處理程序,例如單擊頁面上的保存等。為簡單起見,這里是將頁面加載修改為5秒的刷新時間

$(document).ready(function() {
    var selector = 'meta[name=Refresh]';
    var content = $(selector).attr("content"); //"900;URL=/someurl/logout.asp"
    $(selector).attr("content", "5;URL=/someurl/logout.asp"); 
});

將重置(重新)設置元標記內容的頁面刷新計時器的意圖將被重置。 不幸的是,這似乎不起作用(在IE中)。

由於這是一個遺留應用程序,因此有些決定即使用元標記等。問題是,有沒有辦法讓元標記刷新與Ajax應用程序和平共存? 我做錯了什么,有辦法解決這個問題嗎?

假設您正在使用jQuery這樣的東西可能會起作用。 我沒有測試它,也不知道瀏覽器是否會讀取文檔頭中noscript元素中的元標記。

用以下內容替換您的元標記:

<script type="text/javascript">
    window.onload = function(){
        var timer = null,
            time=1000*60*15, // 15 minutes
            checker = function(){
                if(timer){clearTimeout(timer);} // cancels the countdown.
                timer=setTimeout(function() { 
                    document.location="/someurl/logout.asp";
                },time); // reinitiates the countdown.
            };
        checker(); // initiates the countdown.
        // requires jQuery... (you could roll your own jQueryless version pretty easily though)
        if(window.jQuery){
            // bind the checker function to user events.
            jQuery(document).bind("mousemove keypress click", checker);
        }
    };
</script>
<noscript>
    <meta name="Refresh" http-equiv="Refresh" content="900;URL=/someurl/logout.asp">
</noscript>

肯定有更好的方法可以做到這一點。 就像服務2頁一樣...一個用戶使用javascript而一個用戶沒有。

或者只是禁用沒有javascript的人的應用程序。 :O)

根據此頁面進行編輯http//www.google.com/support/forum/p/Webmasters/thread?tid = 25c023fea4ea60a4& hl = zh_cn元刷新應該在noscript元素內部工作。

我認為沒有辦法阻止元刷新。 您可以更改元標記,但瀏覽器已經確定它將在15分鍾內刷新; 沒有API可以阻止它。

如果你無法停止刷新或使用JavaScript進行重定向,也許你可以包含損壞:

$(window).unload(function() { 
  // Insert code here 
  // to save the user's work.
  alert('Sorry, you have to log out now.')
}); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM