[英]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.