如何通过上下文菜单检测用户是否选择了Refresh
?当用户选择它时,不会调用NavigateComplete2
方法。
更重要的是,要设置自己的自定义用户代理,一种方法是挂钩BeforeNavigate2
事件方法,有必要知道用户是选择了刷新还是导航新网址。
任何见解都将受到赞赏。
这表明在选择NavigateComplete2
时不会触发Refresh
方法。
oWB := new WebBrowserControl("http://stackoverflow.com")
Class WebBrowserControl
{
__New(strURL) {
static WB
Gui, New, Resize
Gui, Add, ActiveX, vWB w780 h580, Shell.Explorer
Gui, show, w800 h600
ComObjConnect(WB, this)
WB.Navigate(strURL)
Loop
Sleep 10
Until (WB.readyState=4 && WB.document.readyState="complete" && !WB.busy)
Return
GuiClose:
ExitApp
}
NavigateComplete2(oParams*) {
ComObjError(false)
WB := oParams[1]
msgbox, 64, Navigate Completed
, % "WB.locationURL :`t`t" WB.locationURL "`n"
. "WB.Document.URL:`t`t" WB.Document.URL "`n"
. "windowlocation.href:`t" WB.document.parentWindow.location.href
}
BeforeNavigate2(oParams*) {
WB := oParams[8]
strURL := oParams[2]
msgbox % "Loading URL:`t`t" strURL "`n"
. "WB.locationURL :`t`t" WB.locationURL "`n"
. "WB.Document.URL:`t`t" WB.Document.URL "`n"
. "location.href:`t`t" WB.document.parentWindow.location.href "`n"
. "WB.ReadyState:`t`t" WB.readystate "`n"
. "WB.document.readystate:`t" WB.document.readystate "`n"
. "WB.Busy:`t`t`t" WB.Busy "`n"
}
}
答案 0 :(得分:1)
查看是否已启动刷新(或新页面)的一种方法是使用以下命令监控鼠标状态(在Chrome中,不确定其他浏览器):if / while(A_Cursor =“AppStarting”)。当鼠标光标变成沙漏时,就是这样。
比较上一个和新网址会告诉您这是新请求还是刷新:ControlGetText CurrentURL,Chrome_OmniboxView1,Chrome
希望这有帮助。