这个是我在单点登录时,用到的用javascrpit实现的用户登录、注册Panel,其中为了避免命名上的部突,参照了ext 实现namespace的做法,我实现了一把,不过很做得很简单。如下
//从Ext借来的命名空间
var TWJavascript =
{
namespace: function() {
var a = arguments, o = null, i, j, d, rt;
for (i = 0; i < a.length; ++i) {
d = a[i].split(".");
rt = d[0];
eval('if (typeof ' + rt + ' == "undefined"){' + rt + ' = {};} o = ' + rt + ';');
for (j = 1; j < d.length; ++j) {
o[d[j]] = o[d[j]] || {};
o = o[d[j]];
}
}
}
}
TWJavascript.namespace("appPath_UserCenter");
appPath_UserCenter.getAppPath = function() {
var root = ConfigUrl.Url.UserCenterUrl;
return root;
}
var returnUrl = window.location.href;
var appPathOfUserCenter = appPath_UserCenter.getAppPath();
var registUrl = String.format("{0}/MembershipRegist/Regist.aspx?returnUrl={1}", appPathOfUserCenter, returnUrl);
var loginUrl = String.format("{0}/SignIn.aspx?returnUrl={1}", appPathOfUserCenter, returnUrl);
var signOutUrl = String.format("{0}/SignOut.aspx", appPathOfUserCenter);
var centerUrl = String.format("{0}/ShoppingCart/CartProductList.aspx", appPathOfUserCenter);
var UserCenter = {
Paramers:
{
userName: GetCookieByName("TW_User", "TWUserName"),
dataTime: GetCookieByName("TW_User", "TWDataTime"),
userID: GetCookieByName("TW_User", "TWUserID"),
token: GetCookieByName("TW_User", "TWEncryptToken")
},
LoginPanel: function() {
var stringBuilder = "";
if (UserCenter.Paramers.userName.length > 0) {
stringBuilder = String.format("<span style=\"float:right\">您好,{0},欢迎您。<a href=\"{1}\" target=\"_blank\">会员中心</a> <a href=\"{2}\" style=color:red><u>注销</u></a></span>", UserCenter.Paramers.userName, centerUrl, signOutUrl);
}
else {
stringBuilder = String.format("<span><a href=\"{0}\" class=gb1>免费注册</a></span> | ", registUrl);
stringBuilder += String.format("<span><a href=\"{0}\" class=gb1>登录</a></span>", loginUrl);
}
stringBuilder = String.format("<div style=\"float:right\">{0}</div>", stringBuilder);
document.getElementById("loginstatus").innerHTML = stringBuilder;
}
}