因此,在添加此内容之前,我刚刚使用了 javascript 解决方案。为此,我们使用 javascript 创建一个页面更改事件,该事件在 python 代码中被否决。
首先,每次加载页面时,我们都会运行以下 javascript(使用 RunScript)
function hoverLink(link) {
window.location.href = "PROXY/HOVER_EVENT_START/" + link;
}
function hoverLinkEnd(link) {
window.location.href = "PROXY/HOVER_EVENT_END/" + link;
}
function setupHoverLinks(elem) {
elem.onmouseover = function() {
hoverLink(elem.href);
}
elem.onmouseout = function() {
hoverLinkEnd(elem.href);
}
}
// Loop through all links in the document and
// setup some event listeners.
links = document.getElementsByTagName("a");
for (var i = 0; i < links.length; i++) {
link = links[i].href;
setupHoverLinks(links[i]);
}
每次在任何页面链接上发生鼠标移入/移出事件时,这将导致页面更改事件。url 的最后部分包含相关链接。
然后我们挂钩 EVT_WEB_VIEW_NAVIGATING 事件,捕捉我们的任何自定义页面更改并否决页面更改事件,例如
def OnPageNavigation(self, evt):
...
uri = evt.GetURL() # you may need to deal with unicode here
if "PROXY/HOVER_EVENT_START/" in uri:
# Simple way to get the link
link = uri.split("PROXY/HOVER_EVENT_START/")[1]
...
# Run your mouseover code
...
evt.Veto()
return
elif "PROXY/HOVER_EVENT_END/" in uri:
...
# Run your mouseout code
...
evt.Veto()
return
...