Webview 在wxPython';s html2网络视图

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

背景:

自从更新到2.9.4之后,我开始将一个(恶意入侵的)pygtk版本的webkit切换到wxPython附带的新html2 webview

问题:

从docs()中我可以看到,(使用python)无法检测链接何时悬停(例如“hoveringoverlink”事件)


我是要求助于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
    ...