爱意满满的作品展示区。
yyfearth

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

  •  
  •   yyfearth ·
    yyfearth · Apr 29, 2012 · 7251 views
    This topic created in 5136 days ago, the information mentioned may be changed or developed.
    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 replies    1970-01-01 08:00:00 +08:00
    yyfearth
        1
    yyfearth  
    OP
       Apr 29, 2012   ❤️ 1
    好用或者有问题,回来报个结果吧~!:)
    别灌水就行了
    hester
        2
    hester  
       Apr 29, 2012
    不错,另外,我很想知道为什么@livid 在PB3上面不用Ajax方案呢?包括:收藏、回复等都不是Ajax方案...
    yyfearth
        3
    yyfearth  
    OP
       Apr 29, 2012
    # 注意!!!!!
    安装新的之前,请务必删除原来的Ajax版本:Ajax Submit 等等~!
    否则会重复发帖,浪费铜币~!
    !!!!!!!!!!
    yyfearth
        4
    yyfearth  
    OP
       Apr 29, 2012   ❤️ 1
    @hester 感觉 Livid 不太喜欢 Ajax 的操作方式,包括他的 workspace 也都不用 Ajax

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

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

    另外,不懂啥是 xxx.meta.js 最近太慢,没空看其他资料,马上期末了
    ayanamist
        15
    ayanamist  
       May 10, 2012   ❤️ 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
       May 10, 2012
    @ayanamist 大概明白了 chrome 支持自动更新么?
    另外没有看到可以上传 meta.js 的地方啊
    还是在user.js里面自己实现?
    ayanamist
        17
    ayanamist  
       May 10, 2012
    @yyfearth 是网站自动从你的脚本里前面几段的内容提取出来的。
    Chrome自带的UserScript功能是不支持自动更新的,所以需要自己实现。
    TamperMonkey支持自动更新。
    yokle
        18
    yokle  
       May 12, 2012
    不错的想法哦。。方便了很多
    regent
        19
    regent  
       May 13, 2012
    有了这个脚本用起来舒服一些,尤其是加上了回复快捷键
    regent
        20
    regent  
       May 13, 2012
    include部分请再加上 *://v2ex.com/t/*
    不然在一些页面无效
    yyfearth
        21
    yyfearth  
    OP
       May 13, 2012
    @regent 哦,什么时候v2ex支持裸域了?我开发的时候,都还是redirect到www的。
    vayn
        22
    vayn  
       May 13, 2012
    @yyfearth Greasemonkey 的 include 规则支持正则表达式,比用通配符方便。例如:

    http://gist.github.com/2687156
    tioover
        23
    tioover  
       May 13, 2012
    看起来很好用的样子
    yyfearth
        24
    yyfearth  
    OP
       May 13, 2012
    @vayn 但是chrome不一定支持吧?我是用chrome的,所以我优先考虑chrome的情况,而且我不愿意用tampermonkey。
    vayn
        25
    vayn  
       May 14, 2012
    @yyfearth Greasemonkey 0.9.8 开始有这个特性的,不知道 Chrome 原生支持到哪个版本。为啥不用 Tampermonkey?Firefox 上也要装 Greasemonkey 插件才能跑 userscript 啊
    Livid
        26
    Livid  
    MOD
    PRO
       May 14, 2012
    @yyfearth 是的,最近 V2EX 开始支持裸域了。
    regent
        27
    regent  
       Jun 27, 2012
    能否在发帖的时候也支持ctrl + enter
    mimzy
        28
    mimzy  
       Jun 27, 2012
    @regent 月经贴 这贴里有插件支持 /t/14716 而且你可以试试 Tab + 空格
    ayanamist
        29
    ayanamist  
       Jul 26, 2012
    现在好像会返回内容为空?
    ayanamist
        30
    ayanamist  
       Jul 26, 2012
    @ayanamist 难道是我的网络问题?
    DragonPetter
        31
    DragonPetter  
       Jul 26, 2012
    试试看
    ayanamist
        32
    ayanamist  
       Aug 28, 2012
    这个在最新的改版中,ajax回复失效了,因为加入了一个额外的once字段,似乎是 @Livid 用来防csrf的?
    看来你的todo里那个foreach field if need得做了……另外找submit的代码也要改一下,现在是button属性,不过有class=super这个特殊的。
    本来想帮你改,无奈是CoffeeScript,不熟悉啊……
    Livid
        33
    Livid  
    MOD
    PRO
       Aug 28, 2012
    @ayanamist 因为最近发生了两次恶意的机器发帖,所以需要加入一些更严格的验证。
    yyfearth
        34
    yyfearth  
    OP
       Aug 28, 2012
    @ayanamist 要改不难 只需要把回复区也一起加上就可以了
    我打算干脆更新整个网页得了
    yyfearth
        35
    yyfearth  
    OP
       Aug 28, 2012
    测试一下,貌似还是不能更新整个网页。
    可以考虑重写一下抓取规则和整体结构
    @ayanamist CoffeeScript 好用啊,JS里面的很多乱七八糟的东西都得到了处理,另外语法风格也很舒服 如果你喜欢 python or ruby
    而且编译出来的JS代码的可读性也很好,除了注释处理起来麻烦一些
    yyfearth
        36
    yyfearth  
    OP
       Aug 28, 2012
    @Livid 貌似收藏按钮和其他的移到了帖子的底部,漂亮了不少,只是从风格上有点突兀,应该用到更多的地方。
    另外是不是考虑把“报告这个主题”也放到那里算了
    yyfearth
        37
    yyfearth  
    OP
       Aug 28, 2012
    貌似把once token解决了,这个没问题就发新版本。
    ayanamist
        38
    ayanamist  
       Aug 28, 2012
    @yyfearth 我是Pythoner,不过好像我自从开始学编程就喜欢那种罗里嗦啰的语言……很习惯看JS了……
    CoffeeScript其实更像Ruby,和Python相去甚远……
    而且一个比较关键的地方是,CoffeeScript无法调试,无法用断点神马的。工程量一大,有个几千几万行,就很难维护了。
    min后的文件小了,也失去了调试的可能。有时候光打log是没有用的,所以现在conditional breakpoint才在各家调试工具中都出现了啊。
    ayanamist
        39
    ayanamist  
       Aug 28, 2012
    @Livid 你这样不是办法的,完全可以让这个自动发帖的东西直接运行在网页里,作为一个content script,完整模拟整个发帖过程。加token的意义只有防CSRF了。
    只有加入像其它网友说的,遭到不同网友举报10次,自动隐藏这个帖子等待审核。同一个网友连续3个帖子遭到审核,就默认他之后发的帖子所有都要遭到审核,除非审核通过。
    防spam必须依靠人肉
    yyfearth
        40
    yyfearth  
    OP
       Aug 28, 2012
    @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  
       Aug 31, 2012
    脚本失效了,楼主做出了更新吗?
    yyfearth
        42
    yyfearth  
    OP
       Sep 1, 2012
    @regent 更新了啊,如果你是Chrome的话,要删掉原来的重新安装。Firefox的GM是否支持自动更新我就不知道了。
    我现在就在用这个脚本,没问题的啊.
    regent
        43
    regent  
       Jun 12, 2013
    发现最近用这个脚本回复的时候,会出现重复发布
    yyfearth
        44
    yyfearth  
    OP
       Jun 15, 2013
    @regent 恩确实,已经很久没有更新了,这种脚本必须经常随着website一直更新才行,可惜现在没有这个精力了。
    regent
        45
    regent  
       Jun 20, 2013
    @yyfearth 别的问题倒没有发现,使用1年多了,就最近才出现这个重复发布的问题
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   978 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 74ms · UTC 22:39 · PVG 06:39 · LAX 15:39 · JFK 18:39
    ♥ Do have faith in what you're doing.