登录 立即注册

首页 > 绿虎论坛 > 公告 (发帖)

[2023-05-11更新] 虎绿林API:JSON Page


『回复列表(72|显示机器人聊天)』

67.

@胡椒舰长,现在看起来,维护一个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官网啊,&nbsp;这俩是不是有一个是假的啊?<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的值。因为特定类型的链接格式是固定的,所以分割起来并不难。

(/@Ta/2021-09-22 17:29//)

68.

@胡椒舰长,如果你要修改html的格式,完全可以。甚至给你定制一种全新的格式也完全可行。但是想修改UBB JSON的格式,做不到。

比如这就是一种全新格式的例子:
https://github.com/hu60t/hu60wap6/blob/master/src/class/ubbtext.php

https://hu60.cn/q.php/msg.index.@.json?_content=text

(/@Ta/2021-09-22 17:39//)

69.

@胡椒舰长,目前最简单的方案是,你修改ubbdisplay.php,把输出的HTML改成你想要的形式,然后我把它作为新的_content类型内置进去,比如叫做:
https://hu60.cn/q.php/msg.index.@.json?_content=app

(/@Ta/2021-09-22 17:43//)

70. @老虎会游泳, 我目前 暂时用 循环渲染标记屏蔽了 type=style的范围的东西,也就是用户小尾巴屏蔽了。
我用json格式,比较兼容整体的应用,例如@用户,点击,可以跳转到用户页面。如果直接使用html-parse那种套一个html,很多功能就无了。
不过好在,我现在自己写了一个ubb解析js版,目前能解析 大部分常用标签。如果你改动了,我也会跟进。
image.png
(/@Ta/2021-09-22 18:17//)

71. @老虎会游泳,不过以后,我肯定会 修改ubbdisplay.php,把输出的json格式,自定义重新组织下,就完美兼容了
(/@Ta/2021-09-22 18:19//)

72.

@胡椒舰长,用户不只有小尾巴,还有文本框:
https://hu60.cn/q.php/bbs.topic.95430.html

青青子衿,悠悠我心
有的人使用了css文本框,正文在文本框里面,也会被楼主的代码屏蔽。此时楼层中的所有内容都会完全消失。 此外,使用了楼主的代码后,你也看不到这个帖子中的章节标题了:https://hu60.cn/q.php/bbs.topic.94992.html
京ICP备18041936号
(/@Ta/2021-09-22 18:27//)

73.

修改ubbdisplay.php,把输出的json格式,自定义重新组织下

这是个好思路啊。修改ubbdisplay.php,让它生成一个JSON字符串。

@胡椒舰长,你可以说一下你想要的格式,我来修改。

发一个你想要格式的例子,包括markdown开始标记、div标记等。

(/@Ta/2021-09-22 18:31//)

74. @老虎会游泳

目前我使用的VUE这种东西, 只支持 【组件循环渲染】和【组件递归】,
所以,都是用解析json 然后 对应换上 vue专用 标签组件

问题1:如果是小尾巴这种需要
<father><son1><son2></son2></son1></father> 无限极嵌套的格式,需要json 也是这种无限极嵌套,
例如{
 "type":"style",
"value":"xx",
  "other":"xx",
  "children":{
    "type":"style",
    "value":"xx",
    "other":"xx",
    "children":{}
  }
}

问题2: 如果设计到markdown的内容,我实在是没办法了,因为 我发现nvue情况下的所有的 markdown解析组件都不支持,markdown我目前没找到好办法

(/@Ta/2021-09-22 20:08//)

75.

@胡椒舰长,所以你不如使用webview直接展示html。捕获webview中的链接点击事件应该不难。

(/@Ta/2021-09-22 20:52//)

76.

@胡椒舰长,webview肯定可以和主程序通信。你可以在我的html后附加你自己的<script>标签,拦截@链接的onclick事件,添加通信代码。这样点击那些链接后,依然可以执行你想执行的动作。

(/@Ta/2021-09-22 20:55//)

77.

@胡椒舰长,你的同源策略实现有问题。

你POST的时候加了bbs.newtopic.88.json?_origin=*,又没有附加sid,这会导致掉线,所以发帖回帖都不会成功。

图片.png

正确的做法是:

  1. 如果h5的域名不是hu60.cn,就需要做登录功能,获取并存储sid,然后每个请求都要加?_origin=*和sid。注意是每个请求,不只是POST请求,否则部署为web页面时就会遇到浏览器的同源错误拦截,首页也加载不了,案例:https://static.hu60.cn/h5/
  2. 如果h5的域名是hu60.cn,可以不做登录功能,但是所有请求都不能加?_origin=*,注意POST请求也不能加,否则POST的时候就会掉线(因为没加sid),发帖回帖都不会成功。案例:https://hu60.cn/h5/
(/@Ta/2021-09-22 23:02//)

78.

@胡椒舰长,此外为了编程简单,我建议改为传递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)方式传递。

(/@Ta/2021-09-22 23:11//)

79. @老虎会游泳,目前我已经找到了一个html2json的库,可以实现我所说的递归生成。预期效果应该可以还原原版网页的功能
https://blog.csdn.net/lsvtogergo/article/details/106223693

image.png
(/@Ta/2021-09-26 14:17//)

上一页 4/4页,共72楼

回复需要登录

11月5日 21:53 星期二

本站由hu60wap6华为CPU驱动

备案号: 京ICP备18041936号-1