How to tell QWebPage
not to load specific type of resources like js, css or png?
The solution is to extend QNetworkAccessManager
class and override it's virtual method QNetworkAccessManager::createRequest
In our implementation we check the path of the requested url and if it's the one we don't want to download we create and hand over an empty request instead of the real one.
Below is a complete, working example.
#include <QApplication>
#include <QUrl>
#include <QtWebKit/QWebPage>
#include <QtWebKit/QWebFrame>
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>
#include <QDebug>
class NAM : public QNetworkAccessManager {
Q_OBJECT
protected:
virtual QNetworkReply * createRequest(Operation op,
const QNetworkRequest & req,
QIODevice * outgoingData = 0) {
if (req.url().path().endsWith("css")) {
qDebug() << "skipping " << req.url();
return QNetworkAccessManager::createRequest(QNetworkAccessManager::GetOperation,
QNetworkRequest(QUrl()));
} else {
return QNetworkAccessManager::createRequest(op, req, outgoingData);
}
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWebPage page;
NAM nam;
page.setNetworkAccessManager(&nam);
page.mainFrame()->load(QUrl("http://google.com"));
app.exec();
}
#include "main.moc"