怎么通过通过pushstate来实现无法回退的做法?关于URL编码应该遵循什么规则?

2023-01-18 13:52:33 来源:创视网

典型通过pushstate来实现无法回退的做法。

在A页面调用​pushstate​,此时会触发内核的​RenderDidNavigateToxxxPage​,同时会调用​InsertOrReplaceEntry​向历史记录里塞入B的Url,但是并不会加载B页面

用户点击返回,触发内核的​goback​,此时会获取当前的上一条历史记录,这里就是获取A的历史记录,准备加载A页面

经过层层调用后,发现当前页面和要加载的页面相同,因此触发​LoadInSameDocument​,在该函数里且仅能在该函数里触发​statePopped​,也就是上层要监听的​onpopstate​

此时虽然用户点击了返回,但是实际上还是在当前的页面A,此时又一次调用​pushstate​,又回到了步骤一

因为想要触发到popstate必须要触发loadInSameDocument,pushstate只是其中的一种方式,暂不确定还有没有其他的做法可以和pushstate一样。

URL编码遵循下列规则

每对name/value由&;符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =,&;,和 % 这些特殊的字符。其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。

x 广告
x 广告

Copyright   2015-2022 财富赢家网版权所有  联系邮箱:920 891 263@qq.com

京ICP备2022016840号-48