Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

修复因同一页面 H[1-3] 标签名称一样导致锚点链接一样,使锚链接定位失败的bug #6

Merged
merged 2 commits into from
Mar 1, 2017

Conversation

yuan1994
Copy link
Contributor

@yuan1994 yuan1994 commented Mar 1, 2017

下述文字表示锚链接的id,不是标题,不会对标题做任何改动
修改前:

## 获取实例

## 成绩统计
### 方法
### 功能
### 参数
### 返回值

## 历年成绩
### 方法
### 功能
### 参数
### 返回值

此时第一个返回值与第二返回值的锚链接一样都是返回值,如果点第二个页面会定位到第一个

修改后:

## 1-1-获取实例

## 1-2-成绩统计
### 1-2-1-方法
### 1-2-2-功能
### 1-2-3-参数
### 1-2-4-返回值

## 1-3-历年成绩
### 1-3-1-方法
### 1-3-2-功能
### 1-3-3-参数
### 1-3-4-返回值

修改后两个返回值的锚链接不一样,可以准确定位

@zq99299
Copy link
Owner

zq99299 commented Mar 1, 2017

提交的实现还是有bug:
isRewritePageTitle 重写存在的必要是:写作的时候不主动添加序号,自动生成序号并重写标题

那么问题就来了:
isRewritePageTitle = false

有可能写作的时候手动增加了序号,现在提交的方式就有问题了:如:

# 1. 获取实例
## 1.1. 成绩统计
### 1.1.1 方法

处理之后的锚链接:
# 1-1. 获取实例
## 1-1-1.1. 成绩统计
### 1-1-1-1.1.1 方法

针对此问题,所以我在想:是不是应该增加一个配置选项

如果标题有重复导致锚链接定位不准确,自动改写锚链接id。

实现方式:

  1. isRewritePageTitle = false && 自动改写锚链接id = true; 那么就在生成锚链接id的地方做文章
  2. isRewritePageTitle = true&& 自动改写锚链接id = true; 这个时候直接用重写后的标题做锚连接id

我暂时是这样的想法。你觉得如何。 @yuan1994

@yuan1994
Copy link
Contributor Author

yuan1994 commented Mar 1, 2017

@zq99299 这样不太妥,你还得再加一个配置项,而且如果用户忘了加,那么就会出现锚链接混淆,如果加了这个配置项,那么就把锚链接重写了,何必不直接重写,这样就不会出现锚链接混淆问题,至于你说的那种锚链接里有 【1-2-1.2 标题】这种情况,确实会导致bug,可以使用正则将不能出现在锚链接里的字符串给替换为空字符串,GitHub的README文件里的锚链接就是这样处理的,这样就变成了 【1-2-12标题】 ,这样就彻底解决你说的这种特殊情况下的bug了,你看如何

@yuan1994
Copy link
Contributor Author

yuan1994 commented Mar 1, 2017

标题:v0.1.8 - 2017-02-09
锚链接:#v018---2017-02-09

这是我在你的项目里的README文件里复制的,GitHub就是将 . 删掉,将其他字符换成-,我们可以将不合法字符串全部替换成空字符串或者-,当然我认为-不安全,因为和自动添加的 1-1可能冲突

@zq99299
Copy link
Owner

zq99299 commented Mar 1, 2017

@yuan1994 也可以。你是前端工程师吗?我前端不太好。 不合法的可以替换。那加什么才能不和自动重写的序号 冲突呢。

@zq99299
Copy link
Owner

zq99299 commented Mar 1, 2017

如果用1-1-1 这种的替换 就有可能和重写的 冲突了。看起来就很难看了

@yuan1994
Copy link
Contributor Author

yuan1994 commented Mar 1, 2017

嗯,这个我来解决,我将不合法字符串删掉吧

我不是前端工程师,我前端后台服务器都会点,主要是做PHP

@yuan1994
Copy link
Contributor Author

yuan1994 commented Mar 1, 2017

JavaScript 的正则非常强大,比 PHP 还有 Shell 强大多了

@zq99299
Copy link
Owner

zq99299 commented Mar 1, 2017

好把。我主要是java的。正则我太弱。 那就看加什么才能不和重写的区分开了

@yuan1994
Copy link
Contributor Author

yuan1994 commented Mar 1, 2017

嗯,直接删掉吧,或者下划线?要不下划线吧,不和中划线混淆,也能分隔开字符串

@zq99299
Copy link
Owner

zq99299 commented Mar 1, 2017

ID111_原始标题 这样呢

@zq99299
Copy link
Owner

zq99299 commented Mar 1, 2017

ID111_处理后的原始标题 (不合法字符串删掉)

@yuan1994
Copy link
Contributor Author

yuan1994 commented Mar 1, 2017

下划线是合法字符串,不影响,像 #?!. 这样的不合法,全部替换成_,这样可以保留原来的格式,不会让文字连在一起

@zq99299
Copy link
Owner

zq99299 commented Mar 1, 2017

嗯可以。 不是还是有重复的标题导致锚定位不正确来着。还是采用你那种吧,前缀这样组合:
ID111_处理后的标题
ID121_处理后的标题
这样如何

@yuan1994
Copy link
Contributor Author

yuan1994 commented Mar 1, 2017

这样不行,h1, h2, h3 必须分割开,不然就出现了 h1-11, h2-1 与 h1-1, h2-1, h3-1 重复了,还是用中划线隔开吧,前缀 ID 显得多余,然后对不合法的字符串进行处理后,不可能出现重复的锚链接

@zq99299
Copy link
Owner

zq99299 commented Mar 1, 2017

我纠结的是:1-1-1-1.1. xxx
这样组合起来的话 感觉很混乱了。

那前面为了不重复增加的序号 中间就不加中华线了:

111_1.1.标题

@zq99299
Copy link
Owner

zq99299 commented Mar 1, 2017

有两种情况:

  1. 序号是我们标题重写增加的
  2. 序号是用户协作的时候手动增加的。

@yuan1994
Copy link
Contributor Author

yuan1994 commented Mar 1, 2017

#1-2-2-11-功能
1.1 功能

这是我刚刚测试的结果,都是我们多虑了,这些特殊字符串不用考虑,浏览器为我们解决了,自动把 1.1 功能 转化成了 11-功能

@zq99299
Copy link
Owner

zq99299 commented Mar 1, 2017

我明白了。 是那个lib包自动转换了。 那现在的问题还是如何让id唯一的问题了

@yuan1994
Copy link
Contributor Author

yuan1994 commented Mar 1, 2017

嗯,你说的那种情况有,不过没有人会在标题里加上 1-2这样的吧,顶多有加 1.1 这样的, 1.1 这样的被浏览量解析时替换了

@yuan1994
Copy link
Contributor Author

yuan1994 commented Mar 1, 2017

如果你一定要考虑这种情况,那就在取id时将原来的序号最后面加两个-,这样就变成了1-1--标题,如果用户自己偏要加【1-1 标题】,那生成的锚链接也是 【1-1--1-1-标题】啊

@zq99299
Copy link
Owner

zq99299 commented Mar 1, 2017

1-1-1_原始标题 这样吧

@yuan1994
Copy link
Contributor Author

yuan1994 commented Mar 1, 2017

这样造不出重复的锚链接了吧

@yuan1994
Copy link
Contributor Author

yuan1994 commented Mar 1, 2017

都行,那我改下,最后一个分隔符改成_

@yuan1994
Copy link
Contributor Author

yuan1994 commented Mar 1, 2017

是不是这样可以了?可以了我就 pull request 了

@zq99299
Copy link
Owner

zq99299 commented Mar 1, 2017

嗯嗯 可以的。

@yuan1994
Copy link
Contributor Author

yuan1994 commented Mar 1, 2017

这下完美了吧,哈哈

@zq99299 zq99299 merged commit a1f0bd6 into zq99299:master Mar 1, 2017
@zq99299
Copy link
Owner

zq99299 commented Mar 1, 2017

npm 已升级到 0.2.7

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants