2012-02-28 26 views
1

私は古いWindows VB6プロジェクトの一部を維持する必要があります(つまり、VB.NETに移行するよう教えてください)。このプログラムは、ローカルのHTMLファイルをロードする(異なる統計情報を含みますが、重要ではない)よく知られているWebブラウザコントロール(IE)を組み込みます。 Webブラウザビューでスクロールバーを必要としないことが分かっている(HTMLページがWebブラウザウィンドウよりも長い場合でも、上にあるものを確認するだけです)、DocumentCompleteイベントでDOMを次のように管理します。DOM操作の完了を待つ方法は?

Private Sub wb_DocumentComplete(ByVal pDisp As Object, URL As Variant) 
wb.Document.documentElement.Style.overflow = "hidden" 
ProcessWithDStats 
End Sub 

すべての音が正しく表示され、垂直スクロールバーが消えてしまいましたが、以前のDOM操作が完全に完了していることを確認する必要があるProcessWithDStatsサブ(多くの機能を呼び出す大きなサブ)にいくつかのものを追加する必要がありますmean:スクロールバーが隠されていて、コンテンツがこの新しい幅のスクロールバーに応じて再配置されます)。

だから、どうやって?

DOM管理が実際にレンダリングされる前に、ProcessWithDStatsが実行されます。今まで

は、ここに私の試みは、次のとおりです。

  • 私は2つのライン間(DOC幅とブラウザのクライアント領域1を比較)スクロールバーのテストを追加しようとしましたが、それは動作しません。テストはOKですが、スクロールバーが消えたときのこの幅の変更のためにテキストのリフローは、ProcessWithDStatsが使用される前に適用されるのに十分な時間がありません。さて、このWebBrowserコントロール内の指定されたDOM管理の実際のアプリケーションを待つそこ方法です

(ウェブブラウザのレンダリングが含まれている)私は)(スリープしようとしましたが、それはプログラム全体をロックし

  • 私のようなものを意味する:あなたは最低で...これを実行する必要が

    Do 
    Doevents 
    Loop Until [DOM modification and rendering completed] 
    
  • +0

    文書でフレームが使用されていますか?その場合、コントロールは複数のDocumentCompleteイベントを発生させる可能性があり、トップレベルのドキュメントであるかどうかを判断するためにpDispパラメータを調べる必要があります。 If(pDispがWebBrowser1.Objectの場合)... – jac

    +0

    残念ながら、いいえ、Beaner:フレームやiframeがありません。しかし、私の質問以来、私は試したことがあり、うまくいくと思っていました(しかし、それほどスマートではありませんので、本当にスマートな解決策を待っています)。ちょうど2つの行の間に、私は何もしないが、前の "オーバーフロー隠し"のものと同期する利点を持っているダミーDOM操作を追加します: doc.parentWindow.scrollBy 0,1 doc.parentWindow。scrollBy 0、-1 したがって、ProcessWithDStatsに関わる時間が来ると、リフローが行われました。あれについてどう思う ?あなたはより良い方法を思いついていますか? – hilow

    +0

    あなたはどんなことでも良い仕事をしているようです。 – jac

    答えて

    0

    を。

    Do 
    Sleep 100 
    Doevents 
    Loop Until wb.Busy = False And wb.ReadyState = 4 
    

    あなたのバージョンでは、.Busyは.IsBusyと呼ばれることもありますが、同じことです。

    また、ブラウザの読み込みが完了したかどうかを本当に知りたい場合は、以前の回答を読んでください。あなたが現在持っているよりもはるかに優れた解決策であることが含まれています。この単純な方法よりも少数の選択肢で十分である場合は、ウェブサイトの100%または選択した数少ないサイトで作業する必要があるかどうかを教えてください。

    私はそれがとにかく行って、歓声を知らせてください。

    関連する問題