これはjsFiddleです-http : //jsfiddle.net/75Rqe/8/
残念ながら、最小限の例にまとめることができなかったため、かなり多くのコードが含まれています。
これは、インプレース編集を実装するためにYUI3Datatable用に作成したミックスインの簡略版です。
最初の問題:
- jsFiddleをロードします
- dnum 26の行がテーブルの最後に表示される行になるまで、テーブルを下にスクロールします (例のために、26について特別なことは何もありません)。
- 次に、この行のdnumフィールドをクリックして、26を別のものに変更します。
- 最後にTabキーを押します。
Chromeを使用している場合、テーブルはタブ上で自動スクロールされ、テーブルの真ん中に変更された行が表示されます。
FirefoxやIE9ではそのようなことは起こりません。
jsFiddleのコードを分析することを誰かに期待するのは不公平だと理解しているので、私の質問は、この問題をどのようにトラブルシューティングできるかということです。Chrome開発ツールを使用して、さまざまな「明らかな」場所にブレークポイントを配置しようとしていました。サイコロはありません。コンテンツはスクロールし、ブレークポイントはヒットしません。
スクロールイベントが発生したときに中断できますか?
要するに、私はかなり必死です(windbgでChromeをデバッグすることはすでに私の病気の心を越えました)。
フィードバックは大歓迎です。
編集
OK、SOはいくつかのコードを主張しているので、ここにあります:
YUI.add('dt-inplace-edit',
function (Y) {
"use strict";
...
function DataTableInplaceEdit() {
}
DataTableInplaceEdit.prototype = {
...
};
Y.DataTable.InplaceEdit = DataTableInplaceEdit;
}, '0.1', {requires: ['node']});
YUI({filter: 'raw', debug: true, combine: false}).use("datatable", "node", 'datatable-scroll',
'dt-inplace-edit',
function(Y) {
var i, table, data =[
{dnum:100, dint:1, dtxt:"Test 1 string", dname:"George"},
{dnum:101, dint:2, dtxt:"Test 2 string", dname:"Paul"},
{dnum:102, dint:3, dtxt:"Test 3 string", dname:"Chase"},
{dnum:103, dint:4, dtxt:"Test 4 string", dname:"Marge"},
{dnum:104, dint:5, dtxt:"Test 5 string", dname:"Ben"},
{dnum:105, dint:6, dtxt:"Test 6 string", dname:"Skyler"},
{dnum:106, dint:7, dtxt:"Test 7 string", dname:"Lara"},
{dnum:107, dint:1, dtxt:"Test 1 string", dname:"George"},
{dnum:108, dint:2, dtxt:"Test 2 string", dname:"Paul"},
{dnum:109, dint:3, dtxt:"Test 3 string", dname:"Chase"},
{dnum:110, dint:4, dtxt:"Test 4 string", dname:"Marge"},
{dnum:111, dint:5, dtxt:"Test 5 string", dname:"Ben"},
{dnum:112, dint:6, dtxt:"Test 6 string", dname:"Skyler"},
{dnum:113, dint:7, dtxt:"Test 7 string", dname:"Lara"}
];
Y.Base.mix(Y.DataTable, [Y.DataTable.InplaceEdit]);
data = data.concat(data.concat(data));
for (i = 0; i < data.length; i += 1) {
data[i] = Y.merge(data[i]);
data[i].dnum = i;
}
Y.one('body').addClass("yui3-skin-sam");
table = new Y.DataTable({
columns:[ 'dnum', 'dint', 'dtxt', 'dname' ],
data: data,
height: '15em',
width: '100%',
scrollable: 'y',
}).render('#dt');
});