重写了Ajax回复脚本,支持PB3了,同时支持chrome和firefox - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
yyfearth
V2EX    分享创造

重写了Ajax回复脚本,支持PB3了,同时支持chrome和firefox

  •  
  •   yyfearth/a>
    yyfearth 2012-04-29 07:00:33 +08:00 6679 次点击
    这是一个创建于 4913 天前的主题,其中的信息可能已经有所发展或是发生改变。
    userscript: http://github.com/yyfearth/yyfearth-chrome-repo/raw/master/userscripts/V2AJAX.user.js

    之前为PB2写了一个Ajax回复脚本, http://www.v2ex.com/t/15824 ,很受大家欢迎。由于PB3更新,我也更新了那个脚本,但是考虑到很多地方写的不合理,以及仅仅支持chrome,我就重新写了一个更加强大的版本:

    - Ajax 回复,无刷新
    - 支持使用 ctrl/cmd + enter 发送
    - 发送期间禁止发送,防止重发回复
    - 在刷新回复的同时,回同时刷新未读提醒和铜币
    - 在ajax发送失败时,自动使用原来的post提交方式
    - 自动保持没有提交的回复(对于非firefox,刷新页面也不会丢失回复了)
    - 支持chrome和firefox(但是firefox测试比较有限)

    # 注意:本帖只接受有意义的回复(好的建议以及Bug回复,我会感谢的)
    # 要测试的话,请到 http://www.v2ex.com/t/15836
    # 如果对铜币比较敏感的话,就不要随便测试了
    45 条回复    1970-01-01 08:00:00 +08:00
    yyfearth
        1
    yyfearth  
    OP
       2012-04-29 08:24:00 +08:00   1
    好用或者有问题,回来报个结果吧~!:)
    别灌水就行了
    hester
        2
    hester  
       2012-04-29 09:45:55 +08:00
    不错,另外,我很想知道为什么@livid 在PB3上面不用Ajax方案呢?包括:收藏、回复等都不是Ajax方案...
    yyfearth
        3
    yyfearth  
    OP
       2012-04-29 10:05:18 +08:00
    # 注意!!!!!
    安装新的之前,请务必删除原来的Ajax版本:Ajax Submit 等等~!
    否则会重复发帖,浪费铜币~!
    !!!!!!!!!!
    yyfearth
        4
    yyfearth  
    OP
       2012-04-29 10:07:46 +08:00   1
    @hester 感觉 Livid 不太喜欢 Ajax 的操作方式,包括他的 workspace 也都不用 Ajax

    我接下来打算加上,收藏 的Ajax操作,虽然已经有人做了。
    ayanamist
        5
    ayanamist  
       2012-04-29 16:22:32 +08:00
    @yyfearth 支持这些~好像除了感谢也只能通过回复来表示感谢了
    ayanamist
      &nsp; 6
    ayanamist  
       2012-04-29 16:23:30 +08:00
    希望加入ajax的收藏,另外建议把这个脚本放到userscript上,可以用xxx.meta.js的方式检测自动更新什么的,会比较方便。
    yyfearth
        7
    yyfearth  
    OP
       2012-04-29 16:37:28 +08:00
    @ayanamist 正在做收藏的ajax
    yyfearth
        8
    yyfearth  
    OP
       2012-04-29 16:49:55 +08:00
    @ayanamist 已经搞定了ajax收藏
    freefcw
        9
    freefcw  
       2012-04-29 17:36:57 +08:00
    大赞啊。。。我也觉得应该用ajax回复的……
    zythum
        10
    zythum  
       2012-04-30 15:49:09 +08:00   1
    @yyfearth yy同学也开始福利事业了啊。
    nervouna
        11
    nervouna  
       2012-04-30 16:08:12 +08:00
    hell yes
    jamev5
        12
    jamev5  
       2012-04-30 18:35:28 +08:00
    test!!!
    ayanamist
        13
    ayanamist  
       2012-05-10 01:17:03 +08:00
    继续恳求楼主把这个脚本上传userscripts
        14
    yyfearth  
    OP
       2012-05-10 16:24:17 +08:00
    @ayanamist @ayanamist 上传了
    http://userscripts.org/scripts/show/132931

    如果觉得不错可以推广一下这个帖子,目前耗币太快

    另外,不懂啥是 xxx.meta.js 最近太慢,没空看其他资料,马上期末了
    ayanamist
        15
    ayanamist  
       2012-05-10 16:29:42 +08:00   2
    @yyfearth xxx.meta.js就是剥离了代码的user.js,可以用来检测版本更新什么的。
    例如你的脚本在userscript上的地址是http://userscripts.org/scripts/source/132931.user.js
    那http://userscripts.org/scripts/source/132931.meta.js 就是只有前面描述内容的东西。
    可以通过这个,用正则搞出版本号后检测是否更新。
    yyfearth
        16
    yyfearth  
    OP
       2012-05-10 16:40:06 +08:00
    @ayanamist 大概明白了 chrome 支持自动更新么?
    另外没有看到可以上传 meta.js 的地方啊
    还是在user.js里面自己实现?
    ayanamist
        17
    ayanamist  
       2012-05-10 17:56:29 +08:00
    @yyfearth 是网站自动从你的脚本里前面几段的内容提取出来的。
    Chrome自带的UserScript功能是不支持自动更新的,所以需要自己实现。
    TamperMonkey支持自动更新。
    yokle
        18
    yokle  
       2012-05-12 16:52:18 +08:00
    不错的想法哦。。方便了很多
    regent
        19
    regent  
       2012-05-13 13:19:28 +08:00
    有了这个脚本用起来舒服一些,尤其是加上了回复快捷键
    regent
        20
    regent  
       2012-05-13 13:36:20 +08:00
    include部分请再加上 *://v2ex.com/t/*
    不然在一些页面无效
    yyfearth
        21
    yyfearth  
    OP
       2012-05-13 16:48:11 +08:00
    @regent 哦,什么时候v2ex支持裸域了?我开发的时候,都还是redirect到www的。
    vayn
        22
    vayn  
       2012-05-13 17:29:53 +08:00
    @yyfearth Greasemonkey 的 include 规则支持正则表达式,比用通配符方便。例如:

    http://gist.github.com/2687156
    tioover
        23
    tioover  
       2012-05-13 17:32:20 +08:00
    看起来很好用的样子
    yyfearth
        24
    yyfearth  
    OP
       2012-05-13 22:50:10 +08:00
    @vayn 但是chrome不一定支持吧?我是用chrome的,所以我优先考虑chrome的情况,而且我不愿意用tampermonkey。
    vayn
        25
    vayn  
       2012-05-14 08:32:10 +08:00
    @yyfearth Greasemonkey 0.9.8 开始有这个特性的,不知道 Chrome 原生支持到哪个版本。为啥不用 Tampermonkey?Firefox 上也要装 Greasemonkey 插件才能跑 userscript 啊
    Livid
        26
    Livid  
    MOD
    PRO
       2012-05-14 08:40:40 +08:00
    @yyfearth 是的,最近 V2EX 开始支持裸域了。
    regent
        27
    regent  
       2012-06-27 13:52:07 +08:00
    能否在发帖的时候也支持ctrl + enter
    mimzy
        28
    mimzy  
       2012-06-27 13:59:32 +08:00
    @regent 月经贴 这贴里有插件支持 /t/14716 而且你可以试试 Tab + 空格
    ayanamist
        29
    ayanamist  
       2012-07-26 13:32:31 +08:00
    现在好像会返回内容为空?
    ayanamist
        30
    ayanamist  
       2012-07-26 13:34:09 +08:00
    @ayanamist 难道是我的网络问题?
    DragonPetter
        31
    DragonPetter  
       2012-07-26 14:50:20 +08:00
    试试看
    ayanamist
        32
    ayanamist  
       2012-08-28 09:33:22 +08:00
    这个在最新的改版中,ajax回复失效了,因为加入了一个额外的once字段,似乎是 @Livid 用来防csrf的?
    看来你的todo里那个foreach field if need得做了……另外找submit的代码也要改一下,现在是button属性,不过有class=super这个特殊的。
    本来想帮你改,无奈是CoffeeScript,不熟悉啊……
    Livid
        33
    Livid  
    MOD
    PRO
       2012-08-28 10:13:28 +08:00
    @ayanamist 因为最近发生了两次恶意的机器发帖,所以需要加入一些更严格的验证。
    yyfearth
        34
    yyfearth  
    OP
       2012-08-28 11:25:36 +08:00
    @ayanamist 要改不难 只需要把回复区也一起加上就可以了
    我打算干脆更新整个网页得了
    yyfearth
        35
    yyfearth  
    OP
       2012-08-28 11:55:31 +08:00
    测试一下,貌似还是不能更新整个网页。
    可以考虑重写一下抓取规则和整体结构
    @ayanamist CoffeeScript 好用啊,JS里面的很多乱七八糟的东西都得到了处理,另外语法风格也很舒服 如果你喜欢 python or ruby
    而且编译出来的JS代码的可读性也很好,除了注释处理起来麻烦一些
    yyfearth
        36
    yyfearth  
    OP
       2012-08-28 12:30:02 +08:00
    @Livid 貌似收藏按钮和其他的移到了帖子的底部,漂亮了不少,只是从风格上有点突兀,应该用到更多的地方。
    另外是不是考虑把“报告这个主题”也放到那里算了
    yyfearth
        37
    yyfearth  
    OP
       2012-08-28 12:31:05 +08:00
    貌似把once token解决了,这个没问题就发新版本。
    ayanamist
        38
    ayanamist  
       2012-08-28 12:38:56 +08:00
    @yyfearth 我是Pythoner,不过好像我自从开始学编程就喜欢那种罗里嗦的语言……很习惯看JS了……
    CoffeeScript其实更像Ruby,和Python相去甚远……
    而且一个比较关键的地方是,CoffeeScript无法调试,无法用断点神马的。工程量一大,有个几千几万行,就很难维护了。
    min后的文件小了,也失去了调试的可能。有时候光打log是没有用的,所以现在conditional breakpoint才在各家调试工具中都出现了啊。
    ayanamist
        39
    ayanamist  
       2012-08-28 12:41:52 +08:00
    @Livid 你这样不是办法的,完全可以让这个自动发帖的东西直接运行在网页里,作为一个content script,完整模拟整个发帖过程。加token的意义只有防CSRF了。
    只有加入像其它网友说的,遭到不同网友举报10次,自动隐藏这个帖子等待审核。同一个网友连续3个帖子遭到审核,就默认他之后发的帖子所有都要遭到审核,除非审核通过。
    防spam必须依靠人肉
    yyfearth
        40
    yyfearth  
    OP
       2012-08-28 12:52:32 +08:00
    @ayanamist 问题在于这个社区貌似只有Livid一人在审核,这样他工作量太大了。
    不过这个token意义不是特别大

    Coffee主要是学ruby,但是基本的语法还是参照了python,ruby有end的(其实我希望可以有end)
    调试的话,可以直接对编译的JS进行调试,默认编译的JS没有minify
    minify是为了加速,和Coffee无关。dev的时候不用minify就是了,minify是在deploy的时候自动完成的,现在Coffee的问题是和JS的line number对应还是比较麻烦,Coffee的issue里面已经讨论的比较火热了。
    对我来说coffee只是为了方便写JS的一个工具而已,同样的实现,Coffee比JS代码量 特别是行数 少了很多
    regent
        41
    regent  
       2012-08-31 20:40:26 +08:00
    脚本失效了,楼主做出了更新吗?
    yyfearth
        42
    yyfearth  
    OP
       2012-09-01 05:42:44 +08:00
    @regent 更新了啊,如果你是Chrome的话,要删掉原来的重新安装。Firefox的GM是否支持自动更新我就不知道了。
    我现在就在用这个脚本,没问题的啊.
    regent
        43
    regent  
       2013-06-12 20:42:46 +08:00
    发现最近用这个脚本回复的时候,会出现重复发布
    yyfearth
        44
    yyfearth  
    OP
       2013-06-15 00:40:05 +08:00
    @regent 恩确实,已经很久没有更新了,这种脚本必须经常随着website一直更新才行,可惜现在没有这个精力了。
    regent
        45
    regent  
       2013-06-20 14:56:24 +08:00
    @yyfearth 别的问题倒没有发现,使用1年多了,就最近才出现这个重复发布的问题
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5826 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 03:39 PVG 11:39 LAX 20:39 JFK 23:39
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86