Изменить параметры iscroll4, заданные во время инициализации
Я пытаюсь использовать iscroll4 при разработке приложений для IOS с помощью cordova 2.1.0.
<script type="application/javascript" src="iscroll.js"></script>
<script type="text/javascript">
var myScroll;
function loaded() {
setTimeout(function () {
myScroll = new iScroll('wrapper');
}, 100);
}
window.addEventListener('load', loaded, false);
</script>
Если я хочу редактировать параметры, такие как vScroll, vScrollBar, fixedScrollbar и т. Д. Динамически, т.е. после инициализации iscroll(myScroll = new iScroll('wrapper');), как я могу сделать это в javascript. Заранее спасибо.
1 ответ
Я бы не стал искать решение "работает в любой ситуации".
Я мог бы:
- Суммируйте конкретные параметры, которые вы хотите изменить.
- Посмотрите, какие из этих параметров имеют значение во время инициализации
- программно (вручную) изменить эти параметры
- параметры, которые имеют значение только во время выполнения (то есть считываются, когда происходит событие), я бы просто попытался изменить объект myScroller.options.
Например, вы можете установить эти параметры:
myScroller = new iScroll( el, { x:20, y:30, onRefresh: function(){ alert(11); } } );
Вы хотите изменить эти 3 (или больше..), учитывая мои шаги, которые вы сделаете:
x, y, scrollbarClass
в инициализации мы видим, что используются x & y (строка 120):
// Устанавливаем начальную позицию that.x = that.options.x; that.y = that.options.y;
Это означает, что эти параметры влияют не только на среду выполнения, но во время инициализации они изменяют that.x en 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;)
Обновление: я также заметил функцию уничтожения, и может пригодиться, если вы хотите "полностью очистить" скроллер. Но я не видел код, который удалил бы физически созданную полосу прокрутки, но я не уверен.