是否可以在 WebEngineView 中获取点击链接的 url?

Posted

技术标签:

【中文标题】是否可以在 WebEngineView 中获取点击链接的 url?【英文标题】:Is it possible to get url of clicked link in WebEngineView? 【发布时间】:2016-04-07 19:21:32 【问题描述】:

我注意到在 Qt 5.4 版中,WebView 有一个名为navigationRequired 的信号,它的参数中有一个点击的 URL。在新的 WebView 和 WebEngineView 中,没有这样的信号。我也没有找到任何替代方案。

在 Qt 5.6 中有什么方法可以获取点击链接的 URL 吗?

【问题讨论】:

【参考方案1】:

重新实现QWebEnginePage的方法acceptNavigationRequest

class MyQWebEnginePage : public QWebEnginePage

    Q_OBJECT

public:
    MyQWebEnginePage(QObject* parent = 0) : QWebEnginePage(parent)

    bool acceptNavigationRequest(const QUrl & url, QWebEnginePage::NavigationType type, bool)
    
        if (type == QWebEnginePage::NavigationTypeLinkClicked)
        
            // retrieve the url here
            return false;
        
        return true;
    
;

【讨论】:

所以基本上每次点击 QML WebEngineView 都会调用这个方法? 你为什么不试试呢? 很抱歉这个延迟的问题,但我该如何使用它?我的意思是,这是 c++ 类,我需要从 qml 中检查它。 哦,好的。然后查看此链接:doc.qt.io/qt-5/…。您可以从 WebEngineView 中检索不同的操作 是的,确实!行动解决了我的问题。我刚刚调用了 WebEngineView.onLoadingChanged 并检查了 loadRequest.status 是否等于 LoadStartedStatus,如果是,我调用了 WebAction(Stop) 并从默认浏览器进行了调用。

以上是关于是否可以在 WebEngineView 中获取点击链接的 url?的主要内容,如果未能解决你的问题,请参考以下文章

如何在WebEngineView中调整滚动条的宽度?

如何在 WebEngineView 中调整滚动条的宽度?

WebEngineView - 立即运行JavaScript(在执行页面脚本之前)

如何在 WebEngineView 中呈现的 html 文件中弹出文件对话框/打印对话框?

WebEngineView 大小不受约束且自然的情况下,如何让 Window 和 WebEngineView 一样高

WebEngineView + 虚拟键盘 - 调整大小后保持滚动位置(重点输入)