2

これはおそらく非常に単純な問題ですが、HTMLファイルで使用されている外部のJavaScriptファイルでFirebaseを使用しようとしていて、正しく機能させることができません。このファイルを他の多くの同様のページに使用することを計画しているので、外部のドキュメントに保存したいと思います。具体的には、私のコードは次のとおりです。

$(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をChromeで実行しています。

どうもありがとうございます!

4

1 に答える 1

2

問題は、document.createElement を使用しても、インクルーシブ スクリプトが呼び出される前にスクリプトが強制的に読み込まれ、レンダリングされないことです (現在呼び出されています)。含めたスクリプトがいつ呼び出されるかについて、このメソッドによる保証はありません。

$(function() {...})さらに、スクリプト onDomReady を;の中に入れてロードしています。ドキュメント全体が読み込まれるのを待つのではなく、すぐにヘッダーに挿入する必要があります。

最も簡単な答えは、Firebase を HTML ページの先頭に配置することです。ここで制限について実際に説明していませんが、これは選択肢ではないと思います。ならKISS。

もう 1 つの簡単な答えは、jQuery を利用することです。明らかに利用できるからです。

$.getScript('https://cdn.firebase.com/v0/firebase.js', function() {

    // now I can use Firebase

});

他の方法でこれを達成することもできます (setInterval を使用して Firebase が定義されるまで待ちます。document.createElement 以外のスクリプト取得方法を利用します。「javascript の読み込み順序で動的にスクリプトを読み込む」をグーグルで検索してみてください)。 .

于 2013-03-14T16:40:34.773 に答える