具有母版頁和多個子頁面的簡單網站。Javascript客戶端&asp.net事件處理程序計時問題 - 如何解決?
在Page_Load中,母版頁查找包含的值會話變量,如果它的存在,使用
Page.ClientScript.RegisterStartupScript(this.GetType(), "SessionAlert", "SessionExpireAlert(" + sessionTimeout + ");", true);
這揭開序幕超時警報,工作正常。
有一個頁面上的服務器端的按鈕,有效地結束頁面上的用戶交互,並留下了消息,說明「去,如果你想要做更多的東西重新登錄」。單擊此按鈕時,我想清除會話變量(簡單)並結束運行超時警告警報腳本(並不那麼容易)。
由於法師「的Page_Load」事件觸發按鈕處理程序之前,當時的頁面重新加載,將重新啓動超時腳本。當它碰到按鈕事件處理程序並清除會話變量時,腳本已經運行就已經太遲了。
我試過使用「registerclientscriptblock」來注入立即的javascript來調用我有的「clearTimeout()」客戶端函數,但它似乎無法找到母版頁上存在的函數,並且錯誤。
這似乎是一個典型的「雞和蛋」的情景,我不能見樹不見林。在我開車瘋了之前,有人能指點我嗎?
編輯添加JavaScript代碼位:
目前在Page_Load代碼中引用母版頁功能「SessionExpireAlert」包含了除其他事項外本:
window.updateInterval = setInterval(function() {
seconds--;
document.getElementById("idleTime").innerHTML = convertTime(seconds);
document.getElementById("expireTime").innerHTML = convertTime(seconds);
}, 1000);
該網頁應該能夠訪問由母版頁注入一個腳本創建的任何變量,所以它應該是setTimeout'的'的值賦給一個變種,然後通過注入一個腳本清除它的簡單情況之後的頁面。 – Archer
我知道它*應該*但它不是!查看在上面的OP底部添加的代碼。如果在我的按鈕事件,我用的RegisterClientScriptBlock與「警報(window.updateInterval」);」,那麼警告框彈出與‘不確定’,但如果我從母版頁做的JavaScript它顯示我‘2’ – TheMook
使用。 'RegisterStartupScript',同爲母版頁。你這樣做的方式只是把劇本中的頁面,在任何時候,你告訴它,而啓動腳本是在身體的放在最後,爲了。 – Archer