3

QML Webview を使用しています。intel.com、apple.com、cnn.com、foxnews.com などのサイトでは問題なく動作するようですが、gmail.com や hotmail.com を読み込もうとすると、次の html しか読み込まれないようです。

<html><head></head><body></body></html>
==== load finished

これは、onLoadFinished イベントにあるデバッグ メッセージによってダンプされます。

Webview をセットアップする方法は次のとおりです。

WebView {
    id: webView
    focus: true
    preferredWidth: webkit.width
    preferredHeight: webkit.height
    settings.autoLoadImages: true
    settings.javascriptEnabled: true
    settings.javascriptCanOpenWindows: true
    settings.minimumFontSize: 12
    settings.defaultFontSize: webkit.fontsize
    url: ""

onLoadFinished: {
        console.debug(webView.html);
        console.debug("==== load finished");
}
}

(他のイベントは表示されません)

私が間違っているかもしれないことを知っている人はいますか?「設定」に関するドキュメントがほとんどないため、設定が不足している場合はわかりません(明らかでない限り)。4.7.1 を使用していますが、4.8.2 を試しても同じ結果が得られました。

ありがとう

[編集] 同僚は、それがユーザー エージェントの問題である可能性があると示唆しました。QWebView の C++ バージョンの変更に関する多くの記事を見てきましたが、Qt ソースを直接ハッキングしない限り、QML 側からどのように変更できるかわかりません。それが問題だと思う人はいますか?gmail.com は私のデスクトップ上の他の Web ブラウザー (ubuntu 11.10) で問題なく動作するため、私はそれを疑います。

[編集] Qt 4.7.1 で「ブラウザ」の例をコンパイルしましたが、そこでも動作しません。Qt は先日 4.8.3 でリリースされ、そこで 'browser' をコンパイルしたところ、(browser) は機能しました。gmail.com が http: から https: に変更されていることに気付いたので、QT を -no-openssl でコンパイルしていたことが原因ではないかと考えました。QMLの問題がうまくいかず、4.7.1と4.8.3をopensslでコンパイルしようとしました。

[半解決済み] QT ドキュメントが貧弱であることが判明しました (初心者向け)。QML Webview のドキュメントには、独自の NetworkAccessManagerFactory をインストールする必要があるとは書かれていません。DeclarativeView には engine() (少なくとも 4.7.1) があり、独自の Factory で setNetworkAccessManagerFactory() を呼び出します。これで、デスクトップでは動作しますが、組み込み Linux デバイスでは動作しません。gmail.com のダウンロードを 10% で「ロック」することはありませんが、現在は失敗しています。また、openssl を使用して Qt をコンパイルする必要がありましたが、openssl ライブラリ (ssl および crypto) をロードしていますが、組み込みデバイスではまだ動作していません。非常に奇妙な。

[解決しよう] 変ですが、QNetworkAccessManager::sslErrors(QNetworkReply *, QList)) シグナルを実装していないようです。これはデスクトップには影響しませんでしたが、組み込みデバイスに行ったときは機能しませんでしたが、今では機能します。

4

0 に答える 0