QWebPage
にjs、css、pngなどの特定の種類のリソースを読み込まないように指示するにはどうすればよいですか?QWebPageに特定のタイプのリソースをロードしないように指示するにはどうすればよいですか?
答えて
解決策は、QNetworkAccessManager
クラスを拡張して仮想メソッドQNetworkAccessManager::createRequest
をオーバーライドすることです。実装では、リクエストされた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"
あなたの目標は変化するからWebページを予防することであるならば、あなたはQWebPageで
virtual bool acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, NavigationType type);
を見てみることができます。要求が送信されないようにするには、要求を検査してfalse
を返すことができます。
hmuelnerの答えが間違っているのと同じ理由でこれは間違っています。 [docs](http://developer.qt.nokia.com/doc/qt-4.8/qwebpage.html#acceptNavigationRequest)*この関数は、WebKitから**指定されたリソースへの** navigate **フレームを要求するたびに呼び出されます* –
私は実際に同じ問題を抱えていますが、Piotrソリューションではファイル拡張子のあるURLを想定していますが、残念ながらこれは必ずしも当てはまりません。
私たちが応答を得た後でしかつまらないことがありますが、これは後半から後半です。
我々はCSSを取得する<img>
要素または<link>
であれば言って、リソースを要求要素のコンテキストを取得しようとしたが、req.originatingObject()
は私たちだけQWebFrameを与えます。 たとえば、これはmozillaコードで可能であったことが分かります。
ご連絡先:javascriptおよび自動ロードイメージは、画像とスクリプトの読み込みを防止します。
ヘッダーを取得するだけでHEADリクエストを作成して、Content-Typeヘッダーをチェックし、その値に基づいて決定を下すことができます。 –
- 1. リソースを翻訳しないように指定するにはどうすればよいですか?
- 2. Googleにキャッシュリンクを提供しないように指示するにはどうすればよいですか?
- 3. アイテムフィールドをシリアル化しないようにScrapyに指示するにはどうすればよいですか?
- 4. 特定のファイルタイプで特定の構文ハイライトを常に使用するようにMacVimに指示するにはどうすればよいですか?
- 5. タイプのいずれかが不要なジェネリックタイプを指定するにはどうすればよいですか?
- 6. (どのように)Chrome/Firefox/IE/...に特定のウェブサイトをキャッシュしないように指示できますか?
- 7. Mongooseにフィールドを保存しないように指示するにはどうすればいいですか?
- 8. python3に正しいモジュールを探すように指示するにはどうすればよいですか?
- 9. 特定のタイプではないコントロールを削除するにはどうすればよいですか?
- 10. 明示的にタイプを指定せずにクラスにウィンドウが表示されるようにするにはどうすればよいですか?
- 11. [Float]などの特定の配列タイプを拡張するにはどうすればよいですか?
- 12. 特定のスライダーイメージに遅延を伴うモーダルをロードするにはどうすればよいですか?
- 13. 派生プロジェクトのjarリソースをMETA-INF \リソースにロードするにはどうすればよいですか?
- 14. 異なるホストを指すようにドメインを設定するにはどうすればよいですか?
- 15. タイプをマップキーとして使用しないようにするにはどうすればよいですか?
- 16. XAMLのコンテナ(dllなど)に特定のアイコンを表示するにはどうすればよいですか?
- 17. Webpackに含める特定のcss/jを指定するにはどうすればよいですか?
- 18. Haskell 98で特定のタイプのアプリケーションのインスタンスを定義するにはどうすればよいですか?
- 19. 文書をXSLTスタイルシートのパラメータのタイプとして指定するにはどうすればよいですか?
- 20. 指定したジェネリックタイプでfuncのタイプを作成するにはどうすればよいですか?
- 21. TYPO3 foreign_table:選択ドロップダウンメニューに特定の列を指定するにはどうすればよいですか?
- 22. 特定のインデックスで指定された列を合計するにはどうすればよいですか?
- 23. onClickメソッドを使用して特定のフラグメント/ビューページにロードするにはどうすればよいですか?
- 24. インラインアセンブリを無視するようにcppcheckに指示するにはどうすればよいですか?
- 25. 似たようなルートで特定のコントローラ/アクションにリダイレクトするにはどうすればよいですか?
- 26. コントロールにスマートタグを指定するにはどうすればよいですか?
- 27. Djangoテンプレートに、テンプレートタグのようなコードを含むブロックを解析しないように指示するにはどうすればよいですか?
- 28. ブラウザアクションのホットキーを指定するにはどうすればよいですか?
- 29. x日後に特定のタイプのファイルを削除するにはどうすればよいですか?
- 30. フォーム選択タイプで特定のアイテムを無効にするにはどうすればよいですか?
優雅な解決策! – ismail
拡張子ではなく内容の種類でチェックする方法はありますか? – Zelid
@Zelidはい。 'QNetworkRequest :: header()'と 'QNetworkReply :: header()'を参照してください。 –