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

2012-04-29 07:00:33 +08:00
 yyfearth
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
# 如果对铜币比较敏感的话,就不要随便测试了
6233 次点击
所在节点    分享创造
45 条回复
yyfearth
2012-05-13 16:48:11 +08:00
@regent 哦,什么时候v2ex支持裸域了?我开发的时候,都还是redirect到www的。
vayn
2012-05-13 17:29:53 +08:00
@yyfearth Greasemonkey 的 include 规则支持正则表达式,比用通配符方便。例如:

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/34042

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX