我不会试图寻找“适用于所有情况”的解决方案。
我会:
- 总结您想要修改的特定选项。
- 查看这些选项中的哪些在初始化过程中很重要
- 以编程方式(手动)更改这些选项
- 仅在运行时重要的选项(即在事件发生时读取),我只是尝试修改 myScroller.options 对象。
例如,您可以设置以下选项:
myScroller = new iScroll( el, { x:20, y:30, onRefresh: function(){ alert(11); } } );
考虑到我要执行的步骤,您是否想修改这 3 个(或更多..):
x, y, 滚动条类
在初始化中,我们看到使用了 x 和 y(第 120 行):
// 设置起始位置 that.x = that.options.x; 那.y = 那.options.y;
这意味着这些选项影响的不仅仅是运行时的东西,在初始化期间它会修改 that.x 和 that.y(即使到目前为止非常简单)。
3.
myScroller.x = newX;
myScroller.options.x = newX;
myScroller.y = newY;
myScroller.options.y = newY;
// Also depeneds on x & y, but only do this if you actually useTransform and care about this!
/*
* obtain required variables..
*/
var appVersion = navigator.appVersion,
vendor = (/webkit/i).test(appVersion) ? 'webkit' :
(/firefox/i).test(navigator.userAgent) ? 'Moz' :
'opera' in window ? 'O' : '',
has3d = 'WebKitCSSMatrix' in window && 'm11' in new WebKitCSSMatrix(),
trnOpen = 'translate' + (has3d ? '3d(' : '('),
trnClose = has3d ? ',0)' : ')';
// Code that actually matters, and where we use above variables
if (that.options.useTransform) that.scroller.style[vendor + 'Transform'] = trnOpen + that.newX + 'px,' + that.newY + 'px' + trnClose;
else that.scroller.style.cssText += ';position:absolute;top:' + that.newY + 'px;left:' + that.newX + 'px';
4.
myScroller.options.onRefresh = function() { alert(33); }
也许你甚至可以在 options.onDestroy 属性中做所有这些事情;)
更新:我还注意到了销毁功能,如果您确实想“完全清除”滚动条,可能会很方便。但我没有看到会删除物理创建的滚动条的代码,但我不确定。