2016-03-31 27 views
0
tanımsız

ile erroring, çalışmıyor aşağıdaki olan bir js dosyası var:Benim javascript modül

; 
var tracker = (function() { 

    var _track = function(userId, atts) { 
     alert(userId); 
    }; 


    return { 
     track: function (userId, atts) { 
      _track(userId, atts); 
     } 
    } 
}()); 

Ben diğer hizmetler yaptığını görmek deseni kullanarak javascript yükleme am:

<script> 
(function(w, d, js) { 
    var f = d.getElementsByTagName('script')[0], 
     s = d.createElement('script'); 
    s.async = true; 
    s.src = js; 
    f.parentNode.insertBefore(s, f); 
})(window, document, '//localhost/WebApp1/Assets/tracker/tracker.js'); 

var userAtts = { 
     'foo': 1, 
     'bar': 2, 
     'some-invalid-identifier': 3 
    }; 

    $(document).ready(function() { 
     tracker.track(3213, userAtts); 
    }); 
</script> 

(index):107 Uncaught ReferenceError: tracker is not defined. 

sorunun ne olduğunu tahmin edemezler:

bu hatayı alıyorum.

+0

kullanımı? –

+0

'js.js' öğesini

0

Oysa komut Onload olaya eklenti işleyicisi yüklenir ve doğrudan bu geçmesi veya vaat kullanmak olduğunu tracker çağıran başka bir yolu. Örneğin

:

var trackerPromise = (function(w, d, js) { 
    return new Promise(function(resolve) { 
    var f = d.getElementsByTagName('script')[0], 
     s = d.createElement('script'); 
    s.async = true; 
    s.src = js; 
    s.onload = resolve; 
    f.parentNode.insertBefore(s, f); 

    }); 
})(window, document, 'script.js'); 

ve yerine jQuery ready fonksiyonu izleyici tanımıdır

trackerPromise.then(function() { 
    tracker.track(3213, userAtts); 
}); 

Sample plunkr