2012-02-13 5 views
0

私のヘッダにすべてのjsスクリプトをロードしていますが、すべて正常に動作しています。しかし、私は1つのjsファイルをインラインでロードする必要がある/特定のページにのみロードします。私のスクリプトをgetScriptを使ってロードする

これは、私はそれが動作します私のヘッダに私の他のスクリプトとそれをロードするが、今、私はjqueryのgetScriptを使用してい

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); 

をロードする必要がJSファイルです。これは、スクリプト(使用して放火犯)をロードするが、私は私のjsの内部関数を呼び出すしようとしたとき、それは私の2つのエラー

  1. プロパティ「offsetHeight」ヌルのを読み取ることができません

  2. メソッドを呼び出すことはできません「リフレッシュを与えるファイル未定義

の「これは私がgetScript

$(document).ready(function() { 
    $('.email').click(function(){ 
      $.getScript("assets/js/scroll.js",function() { 
        pullDownAction(); 
        loaded(); 
      }); 
    }); 
}); 
を使用して、私のjsのスクリプトを呼び出す方法です

ヘルプ誰も私はあなたがやりたいことよりも、これは多くの作業を提案することができる知っているが、あなたが名前空間をやって試してみました

答えて

0

?私はこれが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(); 
      }); 
    }); 
}); 

誤解されていないか、不適切なコピー&ペーストのスキルがある場合は、これがうまくいくはずです。

+0

ネームスペースの汚染のためにちょうどbecareful、私はhttp://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-からjavascriptのこのメソッドを得た1 / – Michael

関連する問題