您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
phpcms二次开发-编辑区域未保存内容的加载(jquer cookie应用)
发布时间:2016-03-24 12:37:16编辑:雪饮阅读()
大家都知道,在使用网站后台的编辑器的过程中会发生这样一种状况,当你好不容易编辑了好多内容却在紧要关头发生意外,例如直接关闭了浏览器窗口等。那么我们就需要对此种意外进行处理了。这里雪饮个人博客采用cookie的存储原理来解决此事的。
找到phpcms的添加新内容所在的动态模版文件:/phpcms/modules/content/templates/content_add.tpl.php
在该文件中引入jquery.cookie.js:
<script language="javascript" type="text/javascript" src="<?php echo JS_PATH?>jquery.cookie.js"></script>
引入该jquery插件可以方便的对cookie进行操作。
在页脚处进行code:
<script type="text/javascript">
if($.cookie("sign")&&$.cookie("sign")!="false"){
if(window.confirm('你上次编辑内容未保存是否加载未保存内容?')){
get_cookies();
setInterval("set_cookies()",20000);//每20秒保存一次
}
}
else{setInterval("set_cookies()",20000);}
function set_cookies(){
var fenshu=document.getElementById("fenshu").value;//分数
var biaoti=document.getElementById("title").value;//标题
var ckedit=escape(CKEDITOR.instances.content.getData());//ck编辑器,取出ck编辑器中的内容,在ck编辑器中的内容是html内容,那么就有可能影响到json数据,所以使用escape进行编码
//当编辑页面元素值不为空时方可存储cookie
if(fenshu != "" && biaoti !="" && ckedit!=""){
var json_str="{";
json_str+='"fenshu":"'+fenshu+'",';
json_str+='"biaoti":"'+biaoti+'",';
json_str+='"ckedit":"'+ckedit+'"';
json_str+="}";
$.cookie("sign",json_str,{ expires: 7 });
}
}
function get_cookies(){
var json_obj=JSON.parse($.cookie("sign"));
document.getElementById("fenshu").value=json_obj.fenshu;
document.getElementById("title").value=json_obj.biaoti;
CKEDITOR.instances.content.setData(unescape(json_obj.ckedit));//给ck编辑器赋值,由于json中ck编辑器的缓存值是escape方法编码过的,所以使用unescape来进行解码
}
</script>
最后在refersh_window()方法中将cookie设置为"false"以响应进入编辑器时的cookie初始化:
function refersh_window() {
$.cookie("sign","false",{ expires: 7 });
setcookie('refersh_time', 1);
}
只有当点击保存按钮时才会执行sign的cookie设置为false
然后我们看看效果如何:
关键字词:jquery cookie,个人博客,phpcms