【问题标题】:How to programmatically scroll HTML elements in a QWebView?如何以编程方式滚动 QWebView 中的 HTML 元素?
【发布时间】:2015-03-22 02:23:03
【问题描述】:

我正在使用 Qt 5.4 和 WebKit 开发一个支持触摸屏的浏览器(我目前没有使用 QML)。目前我正在实现触摸滚动,到目前为止,我设法滚动了页面的主框架。但是,我很难弄清楚如何滚动其 HTML 子元素,例如 iframe、textarea、div 等。 这是因为我知道如何滚动主框架(我可以调用webView->page()->mainFrame()->setScrollPosition(QPoint(x, y));),但不知道如何滚动网页元素。

我想通过 JavaScript 注入可能可以检查 HTML 元素是否可滚动并调用滚动它的函数,但这似乎并不那么优雅。有没有办法只使用 C++/Qt 代码?

【问题讨论】:

    标签: html qt webkit


    【解决方案1】:

    我花了很多时间来解决这个问题。最后我只用了一行 Javascript 就搞定了。

    webView->page()->mainFrame()->evaluateJavaScript("window.scrollTo(0, document.body.scrollHeight);");
    

    另外,如果 Javascript 现在是这样的标准,为什么不能在 QWebView 中依赖它?

    滚动网页元素的 JavaScript 类似于:

    var textarea = document.getElementById('textarea_id');
    textarea.scrollTop = textarea.scrollHeight;
    

    【讨论】:

    • 感谢 sn-p。但是,这个 JS 似乎只滚动主框架(与webView->page()->mainFrame()->setScrollPosition(QPoint(x, y)); 相同)。如果我必须滚动文本区域或 iframe 怎么办?
    • 哦,对不起。我再次认为您正在查看一段 Javascript 来执行此操作。
    猜你喜欢
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 2017-04-13
    • 1970-01-01
    相关资源
    最近更新 更多