卜卜口

Results 198 comments of 卜卜口
trafficstars

通过 hash 接管路由之后,hash 作为 hash 的锚点功能就已经是无法使用,如果在特殊情况按照锚点处理 hash,就意味着 路由和 view 脱节,路由在这时也就失去意义了

唔,按照我上面的理解,不推荐在把 hash 绑到路由上之后再做锚点支持。 如果这时候还想支持锚点,可能类似这样实现好些? ``` document.body.onclick=function(e){ var target=e.target; if(target.tagName=='A'){ var ids=target.getAttribute('href').match(/#(.+)$/i); if(ids){ ids=ids[1]; var dom; try{ dom=document.querySelector('#'+ids); }catch(e){ } if(dom){ scrollTo(0,dom.offsetTop); e.preventDefault(); } } } } ```

既然用了 try catch 就干脆一点🤣 ``` document.body.onclick=function(e){ var target=e.target; if(target.tagName=='A') try{ var dom=document.querySelector(target.getAttribute('href')); scrollTo(0,dom.offsetTop); e.preventDefault(); }catch(e){} } ```

我理解你的关注点,我推荐的方法会保持 hash 和 view 的一致性,你的方法会导致 hash 和 view 脱节

`key` 的设置对于路由本身 需要关注的部分只有长度,`hash` 作为路由的前提 就意味着不存在 `hash` 不作为路由的其他情况。在设置了 `!` 前提下 `@ $ % &` 开头的 `hash` 本身就不是推荐的 `url` 格式,这是开发需要注意的、而不是轮子本身去关注

奇怪,放一起居然会报错。我这面一直没办法重现

> > 奇怪,放一起居然会报错。我这面一直没办法重现 > > 我在本地搭建时也会出现同一错误。 > > 难道是和操作系统有关系? > > > node 生成字体子集.js > > node 转译.js > > 分成两个命令单独执行,可以了,谢谢! > > 我的解决方法是把 `;` 改成 `&&`,与分成两行等效。 > > [![](https://user-images.githubusercontent.com/83524927/201478351-7b4e04b5-449b-41fb-aa9a-7def41537ff8.png)](https://github.com/yusancky/GBA-ex/blob/2500d04f35c61b2fb4f05053b9758b348f7c5592/package.json#L6-L8)...

> @itorr 请问为啥要加 setTimeout 呢 是因为 `SVG` 格式图像,在几乎全部浏览器中通过 `(new Image()).src = svgDataURL` 形式触发加载完成事件时,其中引用的字体实际上还没有加载完成,在这个瞬间获取到的图像是字体没有正确加载的样子。 这个问题我没有找到除了 `setTimeout` 暂时规避之外的其他解决方法,如果现在还能在手机上复现,那说明这个问题还要继续寻找修复方案

我是自己画的,有做省份地图的计划么