Webソケットを介してデータが継続的に提供される小さなMacアプリケーションを構築しています。各データセグメントを処理した後、データはに表示されますWebView
。新しいデータがデータを置き換えることはありません。代わりに、 DOM操作を使用WebView
して新しいデータが常にコンテンツに追加されます。以下のコードサンプルは、私が何をしているのかを示しているはずです。WebView
DOMDocument *doc = self.webview.mainFrame.DOMDocument;
DOMHTMLElement *container = (DOMHTMLElement *)[doc createElement:@"div"];
NSString *html = [NSString stringWithFormat:@"... omitted for the sake of brevity ... "];
[container setInnerHTML:html];
[doc.body appendChild:container];
レンダリングはWebView
明らかに非同期で行われます。DOM操作が終了し、コンテンツが描画されたことを確認する方法はありますか?[webview scrollToEndOfDocument:self]
自動スクロールを実装するようなものを使用したいと思います。DOMイベントは、DOMが変更されたとき、ただしこれらの変更がレンダリングされる前にトリガーされたように見えるため、リッスンは役に立ちませんでした。私が今まで使っているコードは次のようなものです
[self.webview.mainFrame.DOMDocument addEventListener:@"DOMSubtreeModified" listener:self useCapture:NO];
と組み合わせて
- (void)handleEvent:(DOMEvent *)event
{
[self.webview scrollToEndOfDocument:self];
}
このコードの問題は、スクロールが早すぎることです。私は基本的に常に1データセグメント遅れています。コンテンツが描画されたときにトリガーされる任意の種類のコールバック/通知に登録できますか?