zoukankan      html  css  js  c++  java
  • 博客园小技巧——强制推荐&强制关注(仅供学习交流)

      首先,感谢你为我的这篇文章点了推荐,虽然你可能没有点,但是我已经“好心”的帮你点了。不信?那你先看下文章右下角的推荐数,然后刷新下页面看看。

      下面我来说下实现原理,其实没什么技术含量,懂点js的人都能进行操作。

      我先用firebug查看了页面上推荐按钮的DOM,发现其实是个点击事件:

      是一个叫 DiggIt() 的方法,分别传入了3个参数,看参数命名应该分别是文章ID、博客ID和一个写死的1。这下就简单了,是不是我直接在页面底部写句一模一样的方法,就能实现了呢?

      于是我到后台“设置”里面找到页尾输入筐,调用这个方法,如下:

      欣喜的去测试,发现测试失败,在我更新后台设置后,再去看,发现整个方法都别过滤掉了,无奈,只能进行第二套计划,就是找到这个方法,最终我在common.js里找到这个方法,如下:

    function DiggIt(entryId, blogId, diggType) {
        currentDiggEntryId = entryId;
        var diggedType = currentDiggType;
        if (diggedType == 0) {
            ShowDiggMsg('提交中...');
            currentDiggType = diggType;
            AjaxPost("/ws/digg.asmx/digg", '{entryId:' + entryId + ',blogId:' + blogId + ',diggType:' + diggType + '}', OnDiggSuccess);
        }
        else if (diggedType == 1) {
            ShowDiggMsg('您已经推荐过了!');
        }
        else if (diggedType == 2) {
            ShowDiggMsg('您已经反对过了!');
        }
    }
    

      当然,我不需要这么多,我只需要这句代码就行:AjaxPost("/ws/digg.asmx/digg", '{entryId:' + entryId + ',blogId:' + blogId + ',diggType:' + diggType + '}', OnDiggSuccess);

      于是我把里面的一些参数手动替换掉,最终变成了:AjaxPost("/ws/digg.asmx/digg", '{entryId:' + cb_entryId + ',blogId:' + cb_blogId + ',diggType:1}', OnDiggSuccess);

      然后我再把它复制到页脚HTML代码处,更新后发现还是过滤掉了。

      我开始观察这句代码,通常过滤代码都是按字符串来过滤,只要页面上出现什么字符串,就自动过滤掉。我想,如果把字符串拆开来用“+”拼接,是否还能过滤掉呢,于是,代码又变成了:AjaxPost("/ws/di"+"gg.as"+"mx/di"+"gg", '{ent'+'ryId:' + cb_entryId + ',blog'+'Id:' + cb_blogId + ',digg'+'Ty'+'pe:1}', OnDiggSuccess);

      更新,发现没事,妥妥的更新成功了,赶紧去之前的博文里试了一把,成功!

      最后,为了保证稳定,我在外面包了一层jquery的ready方法,保证它在页面全部加载完后再执行。于是,最终的代码就是:

    $().ready(function(){
        AjaxPost("/ws/di"+"gg.as"+"mx/di"+"gg", '{ent'+'ryId:' + cb_entryId + ',blog'+'Id:' + cb_blogId + ',digg'+'Ty'+'pe:1}', OnDiggSuccess);
    });
    

      好了,文章到这里就结束了。我只是作为学习研究用,请勿使用于商业用途,否则后果自负。

      PS:稍微有一点小bug,就是提交后不能马上更新,需要刷新下页面才能看到。

      PS2:通过这个思路,其实还能实现强制留言功能,不过我还是比较看重访客的留言,因为自己做的一些插件需要使用者的反馈。所以我就说个思路,至于实现就让你们自己去操作吧。

      PS3:用同样原理也实现了强制关注的功能,实现代码就不公布了,没太大意义。

      PS4:补充一句,我已经给官网邮箱和小组里都发帖告知官网这个问题,希望博客园能尽快处理。

  • 相关阅读:
    linux下创建一个指定大小的文件
    批量替换多个文件中的字符串
    redhat 搭建yum 源
    python ConfigParser 模块
    python yaml 模块
    python xml文件处理
    py2exe 和pyinstaller打包
    wxpython 学习之 --threading
    wxpython 学习之 --文本框与Boxsizer布局管理器
    wxpython 学习之 --窗口分割
  • 原文地址:https://www.cnblogs.com/hooray/p/2175130.html
Copyright © 2011-2022 走看看