V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
yyfearth
V2EX  ›  分享创造

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

  •  
  •   yyfearth ·
    yyfearth · 2012-04-29 07:00:33 +08:00 · 6230 次点击
    这是一个创建于 4593 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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
        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
    yyfearth
        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
       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
       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   ·   实用小工具   ·   3331 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:44 · PVG 20:44 · LAX 04:44 · JFK 07:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.