загрузка моего скрипта с использованием getScript - PullRequest
0 голосов
/ 13 февраля 2012

сначала я загружаю весь свой js-скрипт в заголовок, и все работает правильно.Но у меня есть один файл js, который нужно загрузить inline / загрузить его только на определенной странице.

это файл js, который мне нужен для загрузки

    var myScroll,pullDownEl, pullDownOffset, generatedCount = 0;
    function pullDownAction () {
            setTimeout(function () {    
                    var el, li, i;
                    el = document.getElementById('newlist');

                    if ( el.hasChildNodes() ) {
                            while ( el.childNodes.length >= 1 ) {
                                    el.removeChild( el.firstChild );       
                            } 
                    }

                    for (i=0; i<6; i++) {
                            li = document.createElement('li');
                            li.innerText = 'Generated row ' + (++generatedCount);
                            el.insertBefore(li, el.childNodes[0]);
                    }

                    myScroll.refresh();     
            }, 1000);   
    }

    function loaded() {

            pullDownEl = document.getElementById('pullDown');
            pullDownOffset = pullDownEl.offsetHeight;

            myScroll = new iScroll('wrapper', {
                    //hideScrollbar: false,
                    //hScrollbar: false, vScrollbar: false, vScroll: false,
                    useTransition: true,
                    topOffset: pullDownOffset,
                    onRefresh: function () {
                            if (pullDownEl.className.match('loading')) {
                                    pullDownEl.className = '';
                                    pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Pull down to refresh...';
                                    $('#pullDown').css('display', 'inherit');
                                    $('#pullDown').css('display', 'none');
                                    $('#thelist').css('display', 'none');
                                    $('#newlist').css('display', 'inherit');
                            } 
                    },
                    onScrollMove: function () {
                            if (this.y > 5 && !pullDownEl.className.match('flip')) {
                                    pullDownEl.className = 'flip';
                                    pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Release to refresh...';
                                    $('#pullDown').css('display', 'inherit');
                                    this.minScrollY = 0;
                            } else if (this.y < 5 && pullDownEl.className.match('flip')) {
                                    pullDownEl.className = '';
                                    pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Pull down to refresh...';
                                    $('#pullDown').css('display', 'inherit');
                                    this.minScrollY = -pullDownOffset;
                            } 
                    },
                    onScrollEnd: function () {
                            if (pullDownEl.className.match('flip')) {
                                    pullDownEl.className = 'loading';
                                    pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Loading...';
                                    pullDownAction();   
                            } 
                    }
            });

            setTimeout(function () { document.getElementById('wrapper').style.left = '0'; }, 800);
    }

    document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);

    document.addEventListener('DOMContentLoaded', function () { setTimeout(loaded, 200); }, false);

, загружая его с моимдругой скрипт в моем заголовке это работает, но теперь я использую jquery getScript.Он загружает скрипт (используя firebug), но когда я попытался вызвать функции из моего js-файла, он выдает мне две ошибки

  1. Невозможно прочитать свойство 'offsetHeight', равное нулю

  2. Невозможно вызвать метод refresh из undefined

Так я вызываю свой сценарий js, используя getScript

$(document).ready(function() {
    $('.email').click(function (){
            $.getScript("assets/js/scroll.js",function() {
                    pullDownAction();
                    loaded();
            }); 
    });
});

Помогите кому-нибудь

1 Ответ

0 голосов
/ 23 марта 2012

Я знаю, что это может предложить больше работы, чем вы хотите, но вы пробовали делать пространство имен?Я не знаю, работает ли это на 100% (поскольку я не уверен в обосновании, почему это не работает для вас), но вы пробовали это?

(function( PullDown, $, undefined ) {
    //Private variables and this is a great way for minification, you will get the most out of it
    var myScroll,pullDownEl, pullDownOffset, generatedCount = 0;
    function pullDownAction () {
        //... your stuff here
    }

    function loaded() {
        //... more your stuff here
    }
}(window.PullDown = window.PullDown || {}, jQuery) // avoids name space collision w/ jQuery

Теперь делайте то же самое, но сэто редактирование.

$(document).ready(function() {
    $('.email').click(function (){
            $.getScript("assets/js/scroll.js",function() {
                    window.PullDown.pullDownAction();
                    window.PullDown.loaded();
            }); 
    });
});

Если я не ошибаюсь или у меня плохие навыки копирования и вставки, это должно сработать просто замечательно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...