[2023-05-11更新] 虎绿林API:JSON Page
『回复列表(72|显示机器人聊天)』
@胡椒舰长,现在看起来,维护一个js版的UBB JSON解析器可能不太现实,因为我随时可能会新增UBB。
所以直接从HTML入手似乎是更简单的方案:
"<a class=\"userinfo\" href=\"user.info.22191.json\">a676774305</a> 在 <a class=\"hu60_pos\" href=\"bbs.topic.97020.json?floor=14#14\">帖子“Typora骚操作之自动上传图床”的14楼</a> at你:\n<blockquote>\n<a class=\"userinfo\" href=\"user.info.22230.json\">@hik</a>,<a class=\"userinfo\" href=\"user.info.1.json\">@老虎会游泳</a>,<br/>求问哪一个是Typora官网啊, 这俩是不是有一个是假的啊?<br/><a class=\"userlink\" href=\"https://www.typora.net\">https://www.typora.net</a><br/><a class=\"userlink\" href=\"https://www.typora.io\">https://www.typora.io</a>\n</blockquote>"
可以看出来,链接都加了class
,比如@
链接是userinfo
,帖子链接是hu60_pos
。这样只需要给a
标签绑定onclick
事件,然后检查它的class
,不同的class
对应不同的行为就行了。至于怎么得到想要的数据,如果是我来做,我会选择分隔href
的值。因为特定类型的链接格式是固定的,所以分割起来并不难。
@胡椒舰长,如果你要修改html的格式,完全可以。甚至给你定制一种全新的格式也完全可行。但是想修改UBB JSON的格式,做不到。
比如这就是一种全新格式的例子:
https://github.com/hu60t/hu60wap6/blob/master/src/class/ubbtext.php
@胡椒舰长,目前最简单的方案是,你修改ubbdisplay.php,把输出的HTML改成你想要的形式,然后我把它作为新的_content
类型内置进去,比如叫做:
https://hu60.cn/q.php/msg.index.@.json?_content=app
@胡椒舰长,用户不只有小尾巴,还有文本框:
https://hu60.cn/q.php/bbs.topic.95430.html
你POST的时候加了bbs.newtopic.88.json?_origin=*
,又没有附加sid,这会导致掉线,所以发帖回帖都不会成功。
正确的做法是:
?_origin=*
和sid。注意是每个请求,不只是POST请求,否则部署为web页面时就会遇到浏览器的同源错误拦截,首页也加载不了,案例:https://static.hu60.cn/h5/?_origin=*
,注意POST请求也不能加,否则POST的时候就会掉线(因为没加sid),发帖回帖都不会成功。案例:https://hu60.cn/h5/@胡椒舰长,此外为了编程简单,我建议改为传递x-origin: *
和x-sid: xxx
头信息,这样就不必在URL里大做文章了。
然后代码就可以简化为:
if (不同源) {
xhr工具.添加头信息('x-origin', '*');
xhr工具.添加头信息('x-sid', '通过登陆获取到的sid');
}
所有全局参数(_uinfo
_json
_content
_myself
_origin
_sid
_topic_summary
)现在都可以通过GET、POST和Header(x-uinfo
x-json
x-content
x-myself
x-origin
x-sid
x-topic-summary
)方式传递。