icestark icon indicating copy to clipboard operation
icestark copied to clipboard

复写 pushState 和 replaceState 的时候有问题

Open beyondxgb opened this issue 2 years ago • 4 comments

https://github.com/ice-lab/icestark/blob/master/packages/icestark/src/start.ts#L94 在 start 的时候调用 hijackHistory 复写 pushState 和 replaceState,这时拿到的 originalPush 不是最新的,因为在 start 之前,同样有二方库(比如 aem )复写了 pushState 和 replaceState,导致最终执行 start 的时候,代码的 originalPush 和 originalReplace 引用的还是老的,而 aem 复写的就不生效了。正确做法是在执行 hijackHistory 的时候,赋予 originalPush 和 originalReplace 当前的值。 image

beyondxgb avatar Aug 25 '23 10:08 beyondxgb

这个问题是指 hijackHistory 执行时机过早,在执行时没有将已被复写的 pushState 和 replaceState 给劫持到?

ClarkXia avatar Aug 29 '23 03:08 ClarkXia

这个问题是指 hijackHistory 执行时机过早,在执行时没有将已被复写的 pushState 和 replaceState 给劫持到?

不是哦,是执行 hijackHistory 拦截的时候,没有使用 "已被复写的 pushState 和 replaceState",导致在 hijackHistory 执行前,其他复写的逻辑失效了。

beyondxgb avatar Aug 29 '23 09:08 beyondxgb

@beyondxgb 对于这个场景不是很清楚,可以尝试直接给我们 PR

ClarkXia avatar Sep 06 '23 04:09 ClarkXia

@beyondxgb 对于这个场景不是很清楚,可以尝试直接给我们 PR

已经提了,麻烦看看 https://github.com/ice-lab/icestark/pull/700

beyondxgb avatar Sep 19 '23 09:09 beyondxgb