这是 jsFiddle - http://jsfiddle.net/75Rqe/8/
不幸的是,我无法将其简化为一个最小的示例,因此它包含相当多的代码。
它是我为 YUI3 数据表编写的用于实现就地编辑的 mixin 的精简版本。
首先是问题:
- 加载 jsFiddle
- 向下滚动表格,直到 dnum 为 26 的行是表格中的最后一个可见行:
(26 没有什么特别之处,只是为了示例)
- 现在单击该行的 dnum 字段并将 26 更改为其他内容:
- 最后按tab键:
如果您使用的是 Chrome,则表格会在选项卡上自动滚动,以在表格中间显示修改后的行。
在 Firefox 或 IE9 上不会发生这样的事情:
我知道期望任何人分析 jsFiddle 的代码是不公平的,所以我的问题是如何解决这个问题?我试图使用 Chrome 开发工具在各种“明显”的地方放置断点 - 没有骰子。内容滚动并且没有断点被击中。
滚动事件发生时我可以中断吗?
简而言之,我非常绝望(用 windbg 调试 Chrome 已经让我恶心了)。
欢迎任何反馈。
编辑
好的,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');
});