Изменить параметры 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 ответ

Я бы не стал искать решение "работает в любой ситуации".

Я мог бы:

  1. Суммируйте конкретные параметры, которые вы хотите изменить.
  2. Посмотрите, какие из этих параметров имеют значение во время инициализации
  3. программно (вручную) изменить эти параметры
  4. параметры, которые имеют значение только во время выполнения (то есть считываются, когда происходит событие), я бы просто попытался изменить объект myScroller.options.

Например, вы можете установить эти параметры:

myScroller = new iScroll( el, { x:20, y:30, onRefresh: function(){ alert(11); } } );

Вы хотите изменить эти 3 (или больше..), учитывая мои шаги, которые вы сделаете:

  1. x, y, scrollbarClass

  2. в инициализации мы видим, что используются 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;)

Обновление: я также заметил функцию уничтожения, и может пригодиться, если вы хотите "полностью очистить" скроллер. Но я не видел код, который удалил бы физически созданную полосу прокрутки, но я не уверен.

Другие вопросы по тегам