4

レンダリング後にページの DOM にアクセスしようとしています。ページを表示する必要はなく、GUI や操作なしでプログラムでこれを適用する予定です。

私がポストレンダリングに興味を持った理由は、オブジェクトがどこに現れるかを知りたいからです。一部の位置情報は HTML でコード化されていますが (たとえば、offsetLeft を介して)、多くはコード化されていません。また、Javascript は最終的な位置付けを変更できます。ユーザーが見るものにできるだけ近い位置が必要です。

Chromium コードを調べたところ、これを行う方法はあると思いますが、開始するのに十分なドキュメントがありません。

非常に簡単に言えば、次のような疑似コードに興味があります。

DOMRoot *r = new Page("http://stackoverflow.com")->getDom();

出発点に関するヒントはありますか?

4

1 に答える 1

5

Chromium が公開する Web API ラッパーを使用する必要があります。具体的には、WebDocumentクラスには必要な機能が含まれています。次のように呼び出すことができます。

WebFrame * mainFrame = webView->mainFrame();
WebDocument document = mainFrame->document();
WebElement docElement = document->docElement();

// Manipulate the DOM here using docElement
...

Chromium の Web API ラッパーのソース コードは、こちらで参照できます。 ドキュメンテーションはあまり多くありませんが、ヘッダー ファイルには十分なコメントが付けられており、Chrome のソース コードを参照して API の動作を確認できます。

Chromium を使い始めるのは困難です。test_shell アプリケーションを見ることをお勧めします。また、Chromium Embedded Framework (CEF) のようなフレームワークは、Chromium をアプリケーションに埋め込むプロセスを簡素化します。現在のプロジェクトで CEF を使用していますが、非常に満足しています。

于 2010-07-19T01:04:30.097 に答える