mindoc-org / mindoc

Golang实现的基于beego框架的接口在线文档管理系统
https://mindoc.com.cn/docs/mindochelp
Apache License 2.0
7.29k stars 1.9k forks source link

2.0点击带锚点的链接不会正确跳转(页面二次刷新,锚点自动消失) #467

Open FSSY opened 5 years ago

FSSY commented 5 years ago

请按照一下格式提交issue,谢谢!

  1. 你当前使用的是哪个版本的 MinDoc(godoc_linux_amd64 version)? 2.0正式版本

  2. 你当前使用的是什么操作系统? CentOS7.6 64位

  3. 你是如何操作的? B页面中设置了[TOC],在A页面设置了带锚点去B的链接如:http://a.xx.com/abc#def

  4. 你期望得到什么结果? 浏览时,点击链接会跳转到B页面,页面滚动到锚点所在位置

  5. 当前遇到的是什么结果? 浏览时,点击链接会跳转到B页面,锚点消失,页面也不会滚动(似乎页面刷新了一次)

FSSY commented 5 years ago

我发现了,锚点是后生成,刷新都会消失,是否能支持文档间导航呢?我觉得有了之后使用会更方便,谢谢老大。

lifei6671 commented 5 years ago

我测试没发现你说的问题。

FSSY commented 5 years ago

我测试没发现你说的问题。

点击右侧导航:

屏幕快照 2019-04-23 下午2 26 11

刷新后:

屏幕快照 2019-04-23 下午2 26 28

看上面的链接,带#的锚点没有了,是不是我部署的问题? 我的nginx配置如下:

屏幕快照 2019-04-23 下午2 38 39

补充:改成手册推荐的设置也是一样。

cnspray commented 5 years ago

测试文档的地址:https://doc.iminho.me/docs/fdsfdsf/test,小说章节一的链接是[test1](test#3g4nwk),点击后,地址栏的锚点没有了,不能跳转到锚点处。 另外: 1.当输入# dddd,再选择dddd后,会变成# dddd# dddd ,就是会再复制一遍,H1-H6都有这个问题。 2.想在编辑器中实现对齐的语法,只会开启标签解析,然后插入标签的方式实现 ,如果想要在编辑器中实现:-:, :- ,-:这样的语法,应该修改哪个文件?希望作者指导。

cnspray commented 5 years ago

当输入# dddd,再选择dddd后,点击H1,会变成# dddd# dddd ,就是会再复制一遍,H1-H6都有这个问题。

lifei6671 commented 5 years ago

markdown编辑器本身就是一个标签插入工具,没有那么智能。 @cnspray

FSSY commented 5 years ago

我试了官方手册也是这样, https://www.iminho.me/wiki/docs/mindoc/mindoc-linux.md#f3kcvq 点击是无法跳转到锚点处的,锚点会消失,非常好用,期待改进。

lifei6671 commented 5 years ago

@FSSY 锚标记跳转我也不知道是什么问题。代码中没有对刷新做什么限制。

cnspray commented 5 years ago

能不能在标题栏的按钮那里,这样来实现,先判断选择的这一段的前面是不是有“# ”,如果已经有了,忽略该操作,如果没有,直接在这一段的前面加“# ”。

FSSY commented 5 years ago

我不懂go,我不知道是前端处理路由还是后端处理的,觉得有可能跟路由有关,出于某个策略#后的参数要去掉,所以刷新了一次,但进入文档以后,锚点滚动已由浏览器接管,根本不涉及到路由了,所以正常。

lifei6671 commented 5 years ago

@FSSY 锚标记是无法传给后端的。目前感觉是脚本除了问题,在文件static/js/kancloud.js的最后一部分代码

    try {
        var $node = window.jsTree.jstree().get_selected();
        if ($node instanceof Array && $node.length) {
            $node = window.jsTree.jstree().get_node({ id: $node[0] });
            events.trigger('article.open', { $url: $node.a_attr.href, $id: $node.id });
        }
    } catch (e) {
        console.log(e);
    }

删掉就可以了,这段代码是为了异步加载文档可以点击浏览器后退按钮准备的。目前看来直接打开页面不需要这个操作了。

FSSY commented 5 years ago

全栈大神,小弟学习了!