Webview 在wxPython';s html2网络视图
背景: 自从更新到2.9.4之后,我开始将一个(恶意入侵的)pygtk版本的webkit切换到wxPython附带的新html2 webview 问题: 从docs()中我可以看到,(使用python)无法检测链接何时悬停(例如“hoveringoverlink”事件)Webview 在wxPython';s html2网络视图,webview,wxpython,wx.html2,Webview,Wxpython,Wx.html2,背景: 自从更新到2.9.4之后,我开始将一个(恶意入侵的)pygtk版本的webkit切换到wxPython附带的新html2 webview 问题: 从docs()中我可以看到,(使用python)无法检测链接何时悬停(例如“hoveringoverlink”事件) 我是要求助于javascript黑客来实现这一点,还是有其他更好的解决方案?应该可以添加它。在trac.wxwidgets.org上为它添加一张票证。因此,在添加此票证之前,我只使用javascript解决方案。为此,我们使用j
我是要求助于javascript黑客来实现这一点,还是有其他更好的解决方案?应该可以添加它。在trac.wxwidgets.org上为它添加一张票证。因此,在添加此票证之前,我只使用javascript解决方案。为此,我们使用javascript创建一个页面更改事件,该事件在python代码中被否决 首先,每次加载页面时,我们都运行以下javascript(使用RunScript)
Ross给出的解决方案一直有效,直到我得到一个本地.html文件被IE8非法劫持:
res://ieframe.dll/dnserrordiagoff_webOC.htm#file:///
是的,我使用的是Windows7x64。错误首先发生在IE11上,但在搜索解决方案失败后,我决定卸载它并将IE8重置为默认设置(包括移回其临时文件夹)。令我沮丧的是,这没有起作用
然后我想到了在“PROXY/…”字符串前面加一个有效的URI,比如“127.0.0.1”。但这还不够。但我最终还是添加了一个端口:“127.0.0.1:80”。由于本地服务器经常使用此URI,因此可以使用另一个值,例如“127.0.0.3:87”。使用WX3.0.2和python 2.7.13进行测试
因此,在javascript部分(python部分保持不变),我将“PROXY/HOVER\u EVENT\u START/”替换为“127.0.0.3:87/PROXY/HOVER\u EVENT\u START/”
和“PROXY/HOVER\u EVENT\u END/”
替换为“127.0.0.3:87/PROXY/HOVER\u EVENT\u END/”
。等等
超链接是互联网和HTML存在的理由。为什么wx.html2api没有提供简单的方法来处理它们,这对我来说是个谜。这真的很有用,谢谢。我要注意的一件事是,在这个页面和其他一些浮动的示例页面上有一个输入错误,事件是EVT\u WEBVIEW\u导航
而不是EVT\u WEB\u导航
。如果包含中间下划线,将出现以下错误:AttributeError:“module”对象没有属性“EVT\u WEB\u VIEW\u NAVIGATING”
(或者至少我有!)
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]);
}
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
...