如何告诉QWebPage
不要加载特定类型的资源,例如js,css或png?
最佳答案
解决方案是扩展QNetworkAccessManager
类并覆盖其虚拟方法QNetworkAccessManager::createRequest
在我们的实现中,我们检查请求的URL的路径,如果它是我们不想下载的URL,则我们创建并移交一个空请求,而不是真正的一个。
下面是一个完整的工作示例。
#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"
关于qt - 如何告诉QWebPage不要加载特定类型的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4575245/