2015-03-03 130 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