2011-11-01 19 views
7

私たちは誰かが助けてくれることを望んでいるMac OS XのWebKitを使って最適化の問題に遭遇しました。Mac OS X WebKitとCSSの位置:固定スクロール

私たちは、オンラインWebサイトを指す単一のWebViewを本質的に管理するMac OS X用のCocoaアプリケーションを作成しました。すべてがうまく機能しています。しかし、私たちのWebサイトではCSSの位置が固定されています。StackOverflow.comの上部にある大きなオレンジ色の「ようこそ」バーと同様に、薄い「ヘッダーバー」をWebViewの上部に固定するように固定されています。 Position:fixed activeでWebViewをスクロールすると、Webページ全体が強制的に再描画され、スクロールが辛抱強く遅くなることが判明しました。 position:fixed disabled、スクロールは非常に速く流動的です。 「ビューに」スクロールされたページ要素だけを描画する必要があります。

GoogleのCocoaアプリコードのバグではなく、GoogleのHTML/CSSコードにも問題はないことがわかりました。 AppleのWebKitテストコードを使用して同じスロースクロールが発生します。 Appleのテストコードはhttp://www.StackOverflow.comであることをテストとして指摘できますが、まったく同じ動作が見られます。問題をテストするために使用しているMozillaのバグデータベースにもテストページがあります(https://bug201307.bugzilla.mozilla.org/attachment.cgi?id=139911)。奇妙なことは、Mac上のWebKitベースのブラウザ(SafariやChromeなど)にはこの問題がないことです。スクロールは、CSSの位置を使用してページ上で常に高速です。これらの2つのブラウザで固定されています。

誰かがこの問題をOS XのWebKitで経験しましたか?もしそうなら、私たちはスクロールを高速化するために何ができますか?ありがとう。

+0

私はこれを経験していると思います。 http://harrisnovick.com/orangeを見て、記事タイルをクリックしてください。私は位置:固定が貧弱なスクロール性能の原因であるかどうかを確認しようとします。 – lightyrs

+0

ハリス、サイトに再描画の問題がいくつか表示されますが、同じ問題はないと思います。グリッド要素の1つ上にマウスカーソルを置いてスクロールすると、スクロール操作中にすべてのグリッド要素が再描画されるため、スクロールが少し遅くなります。しかし、私がウィンドウの外にマウスカーソルを置いてスクロールすると、グリッド要素は再描画されません。さらに、左側のオレンジ色のバーは決して再描画されないようです。 – philbert1

+0

これは、あなたのものが私のものとは多少異なる問題だと思うようになります。私たちのウィンドウでは、固定された位置を含め、すべての要素が一貫して再描画されます。 – philbert1

答えて

0

あなたのウェブビューに同じことが当てはまるかどうかわからないので、私はここから離れているかもしれませんが、独自のレイヤーにナビを強制するスタイルを使用すると役立ちます。

translateZ(0)、translate3d(0,0,0、)のようなものです。私はPhonegapを使ってビルドするときに同様の問題に遭遇し、レイヤリングの考えを実際に手助けしました。

私は、ブラウザが第3次元が関与するハードウェアアクセラレーションを利用できると信じています。

0

私は同様の問題を抱えていました。ページをスクロールしているときに固定バーがちらついていました。 は、だから私はレイヤーを使用するためのWebViewを強制し、私は私が私のWebViewベースのMacのアプリで同様の問題があった

[w setWantsLayer:YES]; 
0

を修正しました。 position:fixed cssプロパティを持つヘッダーとフッターがあります。 10.10.x以上で出荷される最新のWebkitにはこの問題はありません。これは、webkitの中で奇妙な(10.9.x)のために起こります。私はそれをwebviewのこれらのプロパティを設定することによって稼働させました

[self.webView setWantsLayer:YES]; 
    [self.webView setCanDrawSubviewsIntoLayer:YES]; 
関連する問題