2016-03-31 47 views
0

示數我有一個具有以下內容的js文件:我的JavaScript模塊不能正常工作,未定義

; 
var tracker = (function() { 

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


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

我使用的模式我看其他服務做載入JavaScript:

<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. 

我找不出什麼問題。

+0

哪裏是跟蹤器定義? –

+0

你在'

0

另一種方法調用時,腳本加載的加載處理程序,以的onload事件,並直接通過這個,或者使用承諾tracker

例如:

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

,並使用該代替的jQuery ready功能

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

Sample plunkr