我正在开发一个使用Qt 5.4和WebKit支持触摸屏的浏览器(我目前没有使用QML)。目前我实现了触摸滚动,到目前为止我设法滚动页面的主框架。但是,我很难弄清楚如何滚动HTML子元素,如iframe,textarea,div等。
这是因为我知道如何滚动主框架(我可以调用webView->page()->mainFrame()->setScrollPosition(QPoint(x, y));
),但不知道如何滚动网页元素。
我想通过JavaScript注入,可以检查HTML元素是否可滚动并调用滚动它的函数,但这似乎并不优雅。有没有办法只使用C ++ / Qt代码?
答案 0 :(得分:1)
我花了很多时间来解决这个问题。最后我只使用了一行Javascript并完成了它。
webView->page()->mainFrame()->evaluateJavaScript("window.scrollTo(0, document.body.scrollHeight);");
另外,如果Javascript现在是这样的标准,为什么你不能在QWebView
内依赖它?
滚动网页元素的Javscript类似于:
var textarea = document.getElementById('textarea_id');
textarea.scrollTop = textarea.scrollHeight;