hackergame
hackergame copied to clipboard
改善 URL hash 部分效果
目前打开一道题目时,URL 会自动被加上 #题目名称
这样的部分,并在页面加载时读取这个信息来直接打开相应题目,以便用户加书签/分享链接。但是题目名称中如果有空格或其他特殊字符,就会被 urlencode(例如,信息安全 2077
变成 #信息安全%202077
),看起来很难看。应当改成这个逻辑:
- 有一个将题目名称转换成 hash part 的函数
f
。对于非 ASCII 字符和不会被 urlencode 的 ASCII 字符,它应当原样保留。对于会被 urlencode 的 ASCII 字符,它必须替换为-
。然后,连续多个-
应当合并成一个,即使它们是从原文中原样保留得到的。 - 当用户打开某道题目时,将 URL hash part 设置为题目名称经过
f
变换的结果。 - 当页面被加载时,读取 URL hash part,将它与每道题目的题目名称经过
f
变换的结果对比,若有匹配,打开相应题目。 - 服务器必须用某种方法保证不会出现两道题目,它们的题目名称经过
f
变换后相同。 - 为了保证第 2、3 步中用的
f
和第 4 步中用的f
算法一致,第 2、3 步中用到的“每道题目的题目名称经过f
变换的结果”可以在后端算出并传输到前端。