[JS] 静态输出的评论也显示UA 程序人生,站务记录
就像本站的本地评论一样。 虽然,本地评论我修改了后台程序,一样存储了评论者 Useragent
。但是除非 JS
方式显示。 不然默认是不会显示的。
原因很简单。 本站解析 UA 是用的这个JS库,而非后台的 Perl 程序。 而本站的本地评论现在显示是动静结合的。 简单的说,每篇文章都是一个静态的HTML页面,定期更新评论在这个页面上。同时JS载入评论,进行判断是否写入静态页面并动态更新之。 显然静态页面解析不可能对 Useragent 字符串进行处理。 而路杨并不像完全对静态评论进行JS替换。。 复杂的的办法就是在后台用 Perl 再写一个解析 UA 的程序出来作为静态HTML的 UA 解析输出。但是 UA 的构造太杂乱了。。。。
今天想了想,其实很简单,还是前段解决吧。 一个 JQ each搞定。 代码如下:
code$("span[rel='ua']").each(function(){
if ( $(this).hasClass("done") ) return;
var $el = $(this).closest(".comment");
var _id= $el.attr("data-comment-id");
$(this).replaceWith(tt.show_ua_by_id(_id))
// $(this).html( tt.show_ua_by_id(_id) ).addClass("done").removeAttr("rel");
});
tt.show_ua_by_id()
代码片段如下:
codeshow_ua_by_id: function(idx){
var s = json_data.comments[idx];
if (!s) return '';
if (s.agent) return tt.show_ua(s.agent);
return '';
},
而静态网页在要显示 UA 的位置加入 <span rel="ua"></span>
就一切OK了。
上面的 JS 都是片段, 完整可以查看本站 评论JS:http://static.easunlee.cn/js/new_mt_comments.js。
记录下来,给自己备忘。
--EOF--