我有4个JavaScript库我想加载如果尚未加载。然后,我想使用他们的功能。加载脚本,如果尚未加载,然后使用它们
我的问题是,我得到Uncaught ReferenceError: sbjs is not defined
,脚本得到加载,但我实际上不能使用它们。
如果它们尚未加载,我已将它完美地工作到它将在</body>
标记上方添加脚本的位置,但我似乎无法让它们工作。
这里是我的代码:
<script>
window.onload = myapp_scripts;
function myapp_scripts() {
var myapp_script;
if (!window.jQuery) {
myapp_script = document.createElement('script');
document.body.appendChild(myapp_script);
myapp_script.src = 'http://myapp.dev/js/jquery.min.js';
console.log('load jquery');
}
if (!window.Cookies) {
myapp_script = document.createElement('script');
document.body.appendChild(myapp_script);
myapp_script.src = 'http://myapp.dev/js/cookie.min.js';
console.log('load cookies');
}
if (typeof url == 'undefined') {
myapp_script = document.createElement('script');
document.body.appendChild(myapp_script);
myapp_script.src = 'http://myapp.dev/js/url.min.js';
console.log('load url');
}
if (typeof sbjs == 'undefined') {
myapp_script = document.createElement('script');
document.body.appendChild(myapp_script);
myapp_script.src = 'http://myapp.dev/js/sourcebuster.min.js';
console.log('load sbjs');
}
myapp_init();
}
function myapp_init() {
sbjs.init();
console.log(Cookies.get('source_id'));
console.log(url('source_id'));
console.log(sbjs.get.current);
$('#myapp_form').submit(function (event) {
event.preventDefault();
console.log('form submitted');
});
}
</script>
我怎么做,所以我也可以用我动态加载的脚本?
[JS内部动态加载JS]的可能重复(https://stackoverflow.com/questions/14521108/dynamically-load-js-inside-js) – Chase
它比这更复杂。您只能在加载脚本后才能使用它们,您肯定知道这些脚本确实发生在每个'createElement'脚本的'onload'函数中。为什么不直接加载它们? – Jorg
发生哪部分错误?某处在这里'sbjs.init();'或'if(typeof sbjs =='undefined')' – smzapp