- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我的 Dojo 应用程序使用几个内容 Pane 来显示不同的信息位。主 Pane 有大量可滚动数据。我需要能够按一个按钮跳转到某些地方。
目前正在使用:
dojo.byId(iid).scrollIntoView();
除了它似乎是基于浏览器窗口的顶部而不是内容 Pane 的顶部进行计算之外,这非常有效。由于我的内容 Pane 不在页面顶部(顶部有一个 50px 高的工具栏),我滚动的 DIV 也太高了 50px。
像这样的东西可以工作,但 scrollBy 只适用于窗口:
dojo.byId(iid).scrollIntoView(); //Scroll to div in quesiton
dojo.byId(iid).scrollBy(0,50); //scroll down 50px more to account for panes offset from window.
完整应用背景:该应用程序使用一些 dijit.layout.BorderContainer 进行布局。用户可以单击左侧的树以在右侧面板中显示事件。如果他们单击“目标”,我会在右侧面板中动态创建所有 DOM 节点,然后尝试滚动到单击的项目。滚动部分适用于顶部和底部节点,但对中间节点有偏移。
最佳答案
不确定这是否合法,但我只是采用了 dojox.fx.scroll 代码并添加了上面提到的“偏移”功能(我也需要它)。
我首先使用 Chrome 调试器获取 dojox.fx.scroll 代码,然后将其粘贴到我的脚本文件夹中的新 .js 文件中。
我将“定义”字符串中的名称从 dojox/fx/scroll 更改为 dojox/fx/scrollMod。我还将引用从 .smoothScroll 更改为 .smoothScrollMod。
define("dojox/fx/scrollMod", ["dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/fx",
"dojox/fx/_base", "dojox/fx/_core", "dojo/dom-geometry", "dojo/_base/sniff"],
function (_1, _2, _3, _4, _5, _6, _7) {
_1.experimental("dojox.fx.scroll");
var fx = _2.getObject("dojox.fx", true);
_4.smoothScrollMod = function (_8) {
if (!_8.target) {
_8.target = _6.position(_8.node);
}
var dx = 0; //RW Custom Offsets
var dy = 0; //RW Custom Offsets
if (_8.offset) {
dx = _8.offset.x;
dy = _8.offset.y;
}
var _9 = _2[(_7("ie") ? "isObject" : "isFunction")](_8["win"].scrollTo),
_a = { x: _8.target.x + dx, y: _8.target.y + dy };
if (!_9) {
var _b = _6.position(_8.win); _a.x -= _b.x; _a.y -= _b.y;
}
var _c = (_9) ? (function (_d) { _8.win.scrollTo(_d[0], _d[1]); }) : (function (_e) { _8.win.scrollLeft = _e[0]; _8.win.scrollTop = _e[1]; });
var _f = new _3.Animation(_2.mixin({ beforeBegin: function () {
if (this.curve) { delete this.curve; }
var _10 = _9 ? dojo._docScroll() : { x: _8.win.scrollLeft, y: _8.win.scrollTop };
_f.curve = new _5([_10.x, _10.y], [_10.x + _a.x, _10.y + _a.y]);
}, onAnimate: _c
}, _8));
return _f;
};
fx.smoothScrollMod = _4.smoothScrollMod; return _4.smoothScrollMod;
});
我在 _4.smoothScrollMod 方法中添加了以下内容:
var dx = 0; //RW Custom Offsets
var dy = 0; //RW Custom Offsets
if (_8.offset) {
dx = _8.offset.x;
dy = _8.offset.y;
}
然后像普通脚本一样在 HTML 文件中引用此文件:
<script src="scripts/dojoScrollMod.js" type="text/javascript"></script>
最后像这样调用它(就像你通常那样,但使用偏移对象):
var sm = new dojox.fx.smoothScrollMod({
node: dojo.query("mySelector")[0],
win: window,
easing: dojo.fx.easing.quadInOut,
offset: { "x": 0, "y": -200},
duration: 800
}).play();
关于javascript - 使用 Dojo ContentPanel 滚动到特定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4998198/
如何安装 DOJO 工具包并在我的网站上使用它?有教程吗? 最佳答案 是的: http://docs.dojocampus.org/quickstart/gettingstarted “Dojo 现在
我对 Dojo 的文档感到很困惑。如何在不实际使用 dojo.declare() 的情况下使用 dojo.require()?我不想使用 dojo.declare() 的原因是它将声明的类公开为全局变
我是 Dojo Toolkit 的新手,今天我遇到了这个话题 dojo.mixin()和 dojo.extend() . 我想两者都习惯于从另一个对象获取一个对象的属性。 谁能解释一下 dojo.mi
我的问题是:我们可以使用 dojo.xhrPost 发布一些 Json 数据吗?更多详情: 我一直在尝试使用 Dojo 代码将 JSON 数据发布到 RESTful 服务。似乎是的行为dojo.xhr
我有一个从XMLStore读取的DataGrid。 DataGrid中大约有2200行。每次我滚动表格时,都要花费几秒钟来显示数据。似乎一次只检索了几行(20-25)。有没有办法一次检索所有行? 最佳
在将请求发送到服务器以获取 AMD 模块之前,是否可以修改 dojo AMD 加载程序使用的请求 url?我想附加一个带有版本号的请求参数。 我们试图解决的问题是我们希望浏览器缓存我们的 javasc
当我使用自定义构建的 dojo 时,dojo.currency.format 没有使用正确的货币符号。 这是我使用的语句: dojo.currency.format(1234.567, {curren
我创建了一个非常简单的模板化小部件。像这样的东西: function (declare, _WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin,
如何在 dojo 数据网格中显示复选框? 最佳答案 我建议将 cellType 设置为 dojox.grid.cells.Bool,而不是格式化程序。格式化程序为您提供了很大的自由,但也有责任在之后从
收到新信息后,我无法尝试更改数据网格的结构。每次进行查询时,我都需要能够更改列数。 我用来创建网格的 javascript 代码 function setgrid(){ var gridLay
试图找出为什么我似乎无法在我的 dojo 构建中实习字符串。我的图层文件已正确创建,但与每个单独的 dijit 关联的代码未正确嵌入。 这是构建输出的一部分,说明了失败的地方: release: I
我刚刚开始使用道场,我知道 dojo.query与 $ 相同在 jQuery 中。 但我还没有弄清楚它返回什么。它是像 jQuery 一样的专门对象吗? 我正在尝试做的(没有运气)是: dojo.qu
有什么方法可以将按钮 添加到TitlePane 标题(标题栏右侧),以便我可以执行一些操作(下载、删除...) 提前致谢。 最佳答案 dijit TitlePane 标题包含以下内容 -Rule
在使用 dojo 的 gfx 渲染文本时,有没有办法告诉文本将占用多少空间,以防我需要包装它以使其适合给定的宽度? 如果您必须使它们适合宽度受限的区域,您将如何管理打印任意长度的文本? 更新 :对不起
我对 Dojo 工具包有点陌生。有些问题我想得到启发(我用谷歌搜索,但没有得到任何合适且令人满意的答案) 我已经在运行的应用程序(由另一个软件开发人员开发)中有一个 dojo.js(也许是下载的未压缩
我正在使用 dojo 柱形图。我想添加一条绘制在绘图上的自定义线(某种阈值线)。所以,假设 y 轴的范围从 0 到 5。我想要一条水平线,比方说,4.2 横跨绘图。它是一个柱形图。我希望找到一些可以帮
我在设置 dojo 时遇到问题. dojo 中定义的任何内容配置似乎使用 localhost:8080/Scripts/foo.js 正确加载小路。但是,如果我尝试在没有这个的情况下加载模块,请说:
我正在为一个项目使用 Dojo 1.9,但我不明白 dojo.provide 的正确替代方案与传统风格相比,AMD 风格。我正在阅读 this文档页面。 很明显,这就是旧语法映射到新语法的方式: 旧
我们正在使用 Dojo 1.9 运行我们的应用程序的构建,而构建本身需要过多的时间才能完成。某处沿着 10-15 分钟的路线。 我们的应用程序无论如何都不是很大。也许 150K LOC。没有什么花哨。
在我的 Dojo 构建中,我引入了一些第三方库。 当我完成构建过程时,由于 ReferenceErrors,我收到了错误。 这很好。这是有道理的。 但是,我想告诉 Dojo 构建过程所引用的内容。本质
我是一名优秀的程序员,十分优秀!