【问题标题】:How to get link URL on onClick in a QWebView?如何在 QWebView 中的 onClick 上获取链接 URL?
【发布时间】:2015-02-20 16:19:44
【问题描述】:

点击链接时如何获取链接的 URL?

如果我在 A 标签中有链接,那很简单:只需将linkClicked(const QUrl&) 信号连接到特定插槽即可。

但是,如果我的单元格上有一个带有“onClick”事件的表格(生成的 html:"<td onClick=\"window.location.href='" + link_ + "';\" ......blahblahblah”),它就不起作用。为什么?

【问题讨论】:

    标签: qt onclick pyqt pyside qwebview


    【解决方案1】:

    顾名思义,linkClicked 信号只有在链接被激活时才会发出。

    但是你可以通过重新实现acceptNavigationRequest来拦截所有的导航请求:

    class WebPage(QtWebKit.QWebPage):
        def __init__(self, parent=None):
            super(WebPage, self).__init__(parent)
            self.setLinkDelegationPolicy(QtWebKit.QWebPage.DelegateExternalLinks)
    
        def acceptNavigationRequest(self, frame, request, type):
            print('Navigation Request:', request.url())
            return False
    
    ...
    
    webview.setPage(WebPage())
    

    但请注意,所有导航请求都通过此方法传递,因此您的实现在不打算处理请求时应返回 True

    【讨论】:

    • 这似乎无法处理像 window.location = '...'; 这样的 javascript 导航,知道如何捕捉这些吗?
    • @Inverse。它对我来说很好 - 即window.location.href=urlwindow.location=url 一样工作,并且一切都通过acceptNavigationRequest。如果您有一个产生不同行为的代码示例,我建议您将其作为一个新问题发布。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 2016-11-27
    • 2016-06-02
    • 2014-04-17
    • 1970-01-01
    相关资源
    最近更新 更多