2015-03-03 93 views
0

我正在做一個應用程序,我相信html5網絡存儲,特別是localstorage,將對我有很大的幫助。令人驚訝的是,它並不像我想的那麼容易。也許我並不真正理解整個概念,因爲我對JavaScript不熟練。asp.net和html5網絡存儲

下面是我用來在外部.js文件中調用JavaScript函數的代碼。

ScriptManager.RegisterStartupScript(this, this.GetType(), "StoreUserLogin", "StoreUserLogin('" + this.LoginHiddenField.Value + "');", true); 

下面,上面的代碼是JavaScript函數:

function StoreUserLogin(emailAddress) { 
if (typeof (Storage) !== "undefined") { 
    //var emailAddress = document.getElementById('LoginHiddenField'); 

    window.sessionStorage.emailname = emailAddress; 
    alert("Information from sessionStorage:- " + window.sessionStorage.emailname); 
} 
else 
    alert("Browser does not support storage"); 

}

+1

那麼,有什麼問題嗎? – hindmost 2015-03-03 10:13:09

+0

問題是,它看起來不工作,我不知道什麼是錯的。我想讓它工作。 – Bainn 2015-03-03 10:28:31

回答

0

首先你應該遵循Mozilla的建議,並使用sessionStorage.setItem();sessionStorage.getItem();

不過順便說一下你是不是這樣做是錯誤的。

sessionStorage知道的第一件事情是不持久的,當用戶關閉它的瀏覽器時,裏面的所有數據將被擦除,而不是在您使用localStorage的情況下。

當您在localStoragesessionStorage中存儲內容時,javascript會對要保存的數據執行.toString()操作。 因此,如果您必須保存一個對象,請在保存sessionStorage之前使用JSON.stringify()來將對象字符串化爲好方法,並且只有在sessionStorage中保存此字符串之後;如果它不是在你的工作if語句嘗試這樣做:

看看這個頁面瞭解更多信息: https://developer.mozilla.org/en/docs/Web/Guide/API/DOM/Storage

編輯

if (typeof (Storage) === "function") 
+0

@Bainn,是你的c#ScriptManager.RegisterStartupScript註冊工作嗎?試着在你的javascript文件裏放一個'console.log()'或者一個'debugger'來知道他是否被調用? 如果它不是在ScriptManager.RegisterStartupScript上查看此stackoverflow帖子,因爲它是問題所在。 http://stackoverflow.com/questions/4994040/scriptmanager-registerstartupscript-code-not-working-why – babar78 2015-03-03 10:51:56

+0

嗯!現在的問題是,就像你懷疑的那樣,劇本根本沒有運行。我已將以下代碼移至頂端部分: 。但是一樣。我怎樣才能讓腳本運行? – Bainn 2015-03-03 12:45:09

+0

@Bainn當你註冊你的RegisterStartupScript頁面已經存在時,你必須在PreRender階段註冊這個回調看看我的第一個評論中鏈接的url,以最多的投票回答 – babar78 2015-03-03 13:28:05