这可能是一个非常简单的问题,但我一直在尝试在外部javascript文件中使用Firebase,该文件与HTML文件一起使用并且无法使其正常工作。我打算将此文件用于许多其他类似的页面,所以我宁愿将它保存在外部文档中。具体来说,我的代码是:
$(function() {
var head= document.getElementsByTagName('head')[0];
var script= document.createElement('script');
script.src= 'https://cdn.firebase.com/v0/firebase.js';
head.appendChild(script);
var Database = new Firebase('https://myfirebase.firebaseIO.com/');
...
但是当我尝试运行它时,它表示Firebase对象/关键字未定义。我知道脚本正确地附加到HTML页面,因为我在运行代码后检查了页面上的HTML。
我还在某处读过你可能需要一个个人服务器来运行Firebase,但坦率地说我真的不知道这意味着什么 - 无论如何,我使用Mac OSX并运行我的所有HTML和Javascript铬。
非常感谢!
答案 0 :(得分:2)
问题在于,在调用包含脚本(现在正在调用)之前,使用document.createElement不会强制加载和呈现脚本。此方法无法保证何时调用您包含的脚本。
此外,您正在将脚本放在$(function() {...})
内,并将其加载到DomReady中;你想立即将它插入标题,而不是等待整个文档加载。
最简单的答案是将Firebase放入html页面的头部;你还没有真正解释过你的限制,但我认为这不适合你。如果是,KISS。
另一个简单的答案是使用jQuery,因为你显然可以使用它。
$.getScript('https://cdn.firebase.com/v0/firebase.js', function() {
// now I can use Firebase
});
您也可以使用其他方法完成此操作(等到使用setInterval定义Firebase;使用除document.createElement之外的其他脚本检索方法 - 尝试使用google搜索“通过javascript加载顺序动态加载脚本”),但我认为这包括你的需求足够。