典型通过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。
Copyright 2015-2022 财富赢家网版权所有 联系邮箱:920 891 263@qq.com