最近我在改写一些前台头部页面,整个页面都是用js来写的,这样写的好处是别的页面调用的时候就特别方便。但是这样写有个问题就是,我们拼接字符串的时候
字体的高亮显示与JS高亮显示不一致,导致我们很难知道自己拼接的到底对不对,为了解决这个问题,可以把整个页面的内容用<script type="text/javascript"></script>
包起来。红色字体部分之所以这样写是因为这两个函数在页面中可能多次被用到,因此单独把它们拿出来,页面中哪里用到它们了就拼接起来。
下面蓝色字体部分就是拼接的字符串。
特别注意:在整个页面加上<script>是为了拼接字符串时看着方便,不容易出错,改完页面后一定要记得把<script>删掉!!!!
现在我把代码贴出来
<script type="text/javascript">
<z:set var="UserData" value="${$User()}"/>
<z:if condition="${empty UserData}">
document.write('<div id="LoginForExam"></div>');
var queryString='${getQueryString(Request,"ksw",true)}';
var referer='${getReferer(Request,true)}';
var referer='${getReferer(Request,true)}';
document.getElementById('LoginForExam').innerHTML = "<span>人民卫生出版社旗下网站 国内最权威医学考试辅导平台! </span>"
+"<a href='${var("ssoURL")}?"+queryString+"Referer="+referer+"'>请登录</a> "
+"<a href='${var("ssoURL")}regist?${getQueryString(Request,"ksw",true)}Referer=${getReferer(Request,true)}'>免费注册</a>";
</z:if>
<z:else>
<z:if condition="${UserData.Status != 0}">
var ssoURL = '${var("ssoURL")}';
var branch = '${UserData.BranchInnerCode}';
document.getElementById('LoginForExam').innerHTML = "<span>人民卫生出版社旗下网站 国内最权威医学考试辅导平台 </span>"
+"欢迎您 ${UserData.UserName} <a href='${var("ssoURL")}Logout.jsp?'+queryString+'Referer=${getReferer(Request,true)}'>退出</a>";
String.prototype.trim = function(){
return this.replace(/(^\s*)|(\s*$)/g,"");
}
var Cookie = {};//Cookie操作类,支持大于4K的Cookie
Cookie.Spliter = "_ZVING_SPLITER_";
+"<a href='${var("ssoURL")}?"+queryString+"Referer="+referer+"'>请登录</a> "
+"<a href='${var("ssoURL")}regist?${getQueryString(Request,"ksw",true)}Referer=${getReferer(Request,true)}'>免费注册</a>";
</z:if>
<z:else>
<z:if condition="${UserData.Status != 0}">
var ssoURL = '${var("ssoURL")}';
var branch = '${UserData.BranchInnerCode}';
document.getElementById('LoginForExam').innerHTML = "<span>人民卫生出版社旗下网站 国内最权威医学考试辅导平台 </span>"
+"欢迎您 ${UserData.UserName} <a href='${var("ssoURL")}Logout.jsp?'+queryString+'Referer=${getReferer(Request,true)}'>退出</a>";
String.prototype.trim = function(){
return this.replace(/(^\s*)|(\s*$)/g,"");
}
var Cookie = {};//Cookie操作类,支持大于4K的Cookie
Cookie.Spliter = "_ZVING_SPLITER_";
Cookie.get = function(name){
var cs = document.cookie.split("; ");
for(i=0; i < cs.length; i++){
var arr = cs[i].split("=");
var n = arr[0].trim();
var v = arr[1]?arr[1].trim():"";
if(n==name){
return decodeURI(v);
}
}
return null;
}
var cs = document.cookie.split("; ");
for(i=0; i < cs.length; i++){
var arr = cs[i].split("=");
var n = arr[0].trim();
var v = arr[1]?arr[1].trim():"";
if(n==name){
return decodeURI(v);
}
}
return null;
}
Cookie.set = function(name, value, expires, path, domain, secure, isPart){
if(!isPart){
var value = encodeURI(value);
}
if(!name || !value){
return false;
}
if(!path){
path = "/";//特别注意,此处是为了实现不管当前页面在哪个路径下,Cookie中同名名值对只有一份
}
if(!domain){
//path = "www.ipmph.com";
}
path = path.replace(/^\w+:\/\/[.\w]+:?\d*/g, '');//特别注意,此处是为了实现不管当前页面在哪个路径下,Cookie中同名名值对只有一份
if(expires!=null){
if(/^[0-9]+$/.test(expires)){
expires = new Date(new Date().getTime()+expires*1000).toGMTString();
}else{
var date = parseDate(expires);
if(date){
expires = date.toGMTString();
}else{
expires = undefined;
}
}
}
if(!isPart){
Cookie.remove(name, path, domain);
}
var cv = name+"="+value+";"
+ ((expires) ? " expires="+expires+";" : "")
+ ((path) ? "path="+path+";" : "")
+ ((domain) ? "domain="+domain+";" : "")
+ ((secure && secure != 0) ? "secure" : "");
if(cv.length < 4096){
document.cookie = cv;
}else{
var max = Math.ceil(value.length*1.0/3800);
for(var i=0; i<max; i++){
if(i==0){
Cookie.set(name, '^'+Cookie.Spliter+'|'+max+'$'+value.substr(0,3800), expires, path, domain, secure, true);
}else{
Cookie.set(name+Cookie.Spliter+i, value.substr(i*3800,3800), expires, path, domain, secure, true);
}
}
}
return true;
}
if(!isPart){
var value = encodeURI(value);
}
if(!name || !value){
return false;
}
if(!path){
path = "/";//特别注意,此处是为了实现不管当前页面在哪个路径下,Cookie中同名名值对只有一份
}
if(!domain){
//path = "www.ipmph.com";
}
path = path.replace(/^\w+:\/\/[.\w]+:?\d*/g, '');//特别注意,此处是为了实现不管当前页面在哪个路径下,Cookie中同名名值对只有一份
if(expires!=null){
if(/^[0-9]+$/.test(expires)){
expires = new Date(new Date().getTime()+expires*1000).toGMTString();
}else{
var date = parseDate(expires);
if(date){
expires = date.toGMTString();
}else{
expires = undefined;
}
}
}
if(!isPart){
Cookie.remove(name, path, domain);
}
var cv = name+"="+value+";"
+ ((expires) ? " expires="+expires+";" : "")
+ ((path) ? "path="+path+";" : "")
+ ((domain) ? "domain="+domain+";" : "")
+ ((secure && secure != 0) ? "secure" : "");
if(cv.length < 4096){
document.cookie = cv;
}else{
var max = Math.ceil(value.length*1.0/3800);
for(var i=0; i<max; i++){
if(i==0){
Cookie.set(name, '^'+Cookie.Spliter+'|'+max+'$'+value.substr(0,3800), expires, path, domain, secure, true);
}else{
Cookie.set(name+Cookie.Spliter+i, value.substr(i*3800,3800), expires, path, domain, secure, true);
}
}
}
return true;
}
Cookie.remove = function(name, path, domain){
var v = Cookie.get(name);
if(!name||v==null){
return false;
}
if(encodeURI(v).length > 3800){
var max = Math.ceil(encodeURI(v).length*1.0/3800);
for(i=1; i<max; i++){
document.cookie = name+Cookie.Spliter+i+"=;"
+ ((path)?"path="+path+";":"")
+ ((domain)?"domain="+domain+";":"")
+ "expires=Thu, 01-Jan-1970 00:00:01 GMT;";
}
}
document.cookie = name+"=;"
+ ((path)?"path="+path+";":"")
+ ((domain)?"domain="+domain+";":"")
+ "expires=Thu, 01-Jan-1970 00:00:01 GMT;";
return true;
}
var v = Cookie.get(name);
if(!name||v==null){
return false;
}
if(encodeURI(v).length > 3800){
var max = Math.ceil(encodeURI(v).length*1.0/3800);
for(i=1; i<max; i++){
document.cookie = name+Cookie.Spliter+i+"=;"
+ ((path)?"path="+path+";":"")
+ ((domain)?"domain="+domain+";":"")
+ "expires=Thu, 01-Jan-1970 00:00:01 GMT;";
}
}
document.cookie = name+"=;"
+ ((path)?"path="+path+";":"")
+ ((domain)?"domain="+domain+";":"")
+ "expires=Thu, 01-Jan-1970 00:00:01 GMT;";
return true;
}
function parseDate(str){//解析形如yyyy-MM-dd hh:mm:ss的日期字符串为Date对象
var regex = /^(\d{4})-(\d{1,2})-(\d{1,2})(\s(\d{1,2}):(\d{1,2})(:(\d{1,2}))?)?$/;
if(!regex.test(str)){
//alert("DateTime.parseDate:错误的日期"+str);
}
regex.exec(str);
var y = RegExp.$1;
var M = RegExp.$2;
var d = RegExp.$3;
var h = RegExp.$5;
var m = RegExp.$6;
var s = RegExp.$8;
var date = new Date();
date.setYear(y);
date.setMonth(M-1);
date.setDate(d);
if(!h){
h = 0;
m = 0;
}
date.setHours(h);
date.setMinutes(m);
if(!s){
s=0;
}
date.setSeconds(s);
return date;
}
function _kp(){
var key = "${UserData.UserName}.KeepAlvie";
var time = Cookie.get(key);
var current = new Date().getTime();
if(!time){
Cookie.set(key,current);
var s = document.createElement("script");
s.src = "${var("ssoURL")}/KeepAlive.jsp?UserName=${UserData.UserName}";
(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(s);
}else if(current - time>=60*1000){
Cookie.set(key,current);
var s = document.createElement("script");
s.src = "${var("ssoURL")}/KeepAlive.jsp?UserName=${UserData.UserName}";
(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(s);
}
}
if(branch.length>4){
setInterval(_kp,60*1000);
}
</z:if>
<z:else>
alert("对不起,您的账户已被禁用,请与管理员联系!");
window.location="${var("ssoURL")}ssoLogout";
</z:else>
</z:else>
</script>
var regex = /^(\d{4})-(\d{1,2})-(\d{1,2})(\s(\d{1,2}):(\d{1,2})(:(\d{1,2}))?)?$/;
if(!regex.test(str)){
//alert("DateTime.parseDate:错误的日期"+str);
}
regex.exec(str);
var y = RegExp.$1;
var M = RegExp.$2;
var d = RegExp.$3;
var h = RegExp.$5;
var m = RegExp.$6;
var s = RegExp.$8;
var date = new Date();
date.setYear(y);
date.setMonth(M-1);
date.setDate(d);
if(!h){
h = 0;
m = 0;
}
date.setHours(h);
date.setMinutes(m);
if(!s){
s=0;
}
date.setSeconds(s);
return date;
}
function _kp(){
var key = "${UserData.UserName}.KeepAlvie";
var time = Cookie.get(key);
var current = new Date().getTime();
if(!time){
Cookie.set(key,current);
var s = document.createElement("script");
s.src = "${var("ssoURL")}/KeepAlive.jsp?UserName=${UserData.UserName}";
(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(s);
}else if(current - time>=60*1000){
Cookie.set(key,current);
var s = document.createElement("script");
s.src = "${var("ssoURL")}/KeepAlive.jsp?UserName=${UserData.UserName}";
(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(s);
}
}
if(branch.length>4){
setInterval(_kp,60*1000);
}
</z:if>
<z:else>
alert("对不起,您的账户已被禁用,请与管理员联系!");
window.location="${var("ssoURL")}ssoLogout";
</z:else>
</z:else>
</script>