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

Add a method to wait vue page navigated. #1166

Open
kvii opened this issue Jan 14, 2025 · 5 comments
Open

Add a method to wait vue page navigated. #1166

kvii opened this issue Jan 14, 2025 · 5 comments
Labels
enhance New feature or request

Comments

@kvii
Copy link
Contributor

kvii commented Jan 14, 2025

Rod Version: v0.116.2

demo 如下:

// vue 页面导航完成结果。如果提前停止等待则返回 false。
type NavigateResultFunc = func() (proto.PageNavigatedWithinDocument, bool)

// 等待 vue hash 路由页面导航完成。
// vue router 有一个 hash 模式。页面的 url 会变成 xx.com/#/yy 的格式。
// 此时页面的“跳转”是用 url 的 fragment 模拟的,并不会触发真正的页面导航。
// 该函数会等待这种页面的跳转事件,并且返回导航的信息。如果监听提前停止则会返回 false。
// 可以给 p 的 ctx 添加 timeout 或者 cancel 来达到提前停止的目的。
func (p *rod.Page) WaitVuePageNavigated() NavigateResultFunc {
	var e proto.PageNavigatedWithinDocument
	wait := p.WaitEvent(&e)
	return func() (proto.PageNavigatedWithinDocument, bool) {
		wait()
		return e, e != proto.PageNavigatedWithinDocument{}
	}
}

当然相关的命名应该改一下。

@kvii kvii added the enhance New feature or request label Jan 14, 2025
@Fly-Playgroud
Copy link
Contributor

你可以使用WaitDOMStable 这个是通用的

@kvii
Copy link
Contributor Author

kvii commented Jan 15, 2025

那如果我明确地要等待页面跳转,但不要等待dom稳定呢?这个就是我们当时 discord 群里说的那个事件。 @Fly-Playgroud

@Fly-Playgroud
Copy link
Contributor

那如果我明确地要等待页面跳转,但不要等待dom稳定呢?这个就是我们当时 discord 群里说的那个事件。 @Fly-Playgroud

我知道,但不是只有Vue 的Hash跳转才会触发这个事件,除非它还有更通用的场景。你的需求,完全可以使用Page.EcahEvent 进行监听

@kvii
Copy link
Contributor Author

kvii commented Jan 15, 2025

那就把名字改成 WaitHashNavigated 嘛。当然如果觉得多此一举的话说明我这个建议不太合理呗。

@Fly-Playgroud
Copy link
Contributor

那就把名字改成 WaitHashNavigated 嘛。当然如果觉得多此一举的话说明我这个建议不太合理呗。

Rod 的API非常的灵活,以便调用者可以更加方便的自行定制自己的API需求,对于事件这一块就是 Page.EachEvent 。Rod 其他的上层API均是为了通用的场景进行提供,保持简洁易用性。当然最后加不加取决于yad @ysmood

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

No branches or pull requests

2 participants