私はdiv内にテーブルを置いて、テーブルで覆われたスペースを制限して代わりにスクロールするテクニックを使用します。 テーブル内にはチェックボックスがあります。これらのチェックボックスは、テーブルのレンダリング方法に影響します。 1つをクリックすると、div内でテーブルが再描画されます。これは、常に、スクロールバーを迷惑なトップに戻すようにします。 私はJavaScriptを使用してテーブルをレンダリングした後、再描画の前の位置にscrollTopの値を設定する関数を非同期に呼び出すsetTimeout呼び出しを行います。 は、ここで問題のコードのsnipitです:javascript scrollTopは動作しないようです。
注:(GE()== geMaybe()==のdocument.getElementById())
o.renderAndScroll = function() {
var eTestSection = geMaybe(o.id + '-testSection');
var scrollTop = 0;
if (eTestSection) {
scrollTop = eTestSection.scrollTop;
}
o.render();
if (eTestSection) {
setTimeout(
function() {
console.log('Scrolling from ' + ge(o.id).scrollTop + ' to ' + scrollTop);
ge(o.id).scrollTop = scrollTop;
console.log('Scrolled to ' + ge(o.id).scrollTop);
},
1000);
}
}
マイコンソールログの出力は、これは私がチェックボックスを変更するたびにあります状態:
Scrolling from 0 to 1357
Scrolled to 0
他にもこの方法を使用できますか?スクロールコードが呼び出された時点でレンダリングがDOMに移動されたことを確認するために、タイムアウトを1秒間だけ行いました。私は主にクロムを使用していますが、最終的にクロスブラウザを使用する必要があります。私はjQueryを使用しません。デバッガでonscrollイベントをキャッチしたり、onscrollハンドラからログを取ろうとしても、スクロールバーをマウスで動かすとクロムデバッガがクラッシュします。
あなたはあなたからそれを得た要素のscrollTopスプライトを設定されていません。 'o'はスクロール可能ですか? – Kaiido
これは明らかに別のバグによって引き起こされた - 私は元々タイムアウト機能で同じ要素を取得していませんでした!私はDBからこの質問を削除する必要があります。 –
質問を削除できます – Kaiido