Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

复写 pushState 和 replaceState 的时候有问题 #698

Open
beyondxgb opened this issue Aug 25, 2023 · 4 comments
Open

复写 pushState 和 replaceState 的时候有问题 #698

beyondxgb opened this issue Aug 25, 2023 · 4 comments

Comments

@beyondxgb
Copy link

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

@ClarkXia
Copy link
Collaborator

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

@beyondxgb
Copy link
Author

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

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

@ClarkXia
Copy link
Collaborator

ClarkXia commented Sep 6, 2023

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

@beyondxgb
Copy link
Author

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

已经提了,麻烦看看 #700

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants