3

私のサーバーでホストされ、他の人がhtmlに埋め込むJSスクリプトがあります。

...<code for http://yoursite.example.com />
<script type="text/javascript" src="http://mysite.example.com/awesome.js" />
...<code for http://yoursite.example.com />

Object()私のスクリプトは、 Javascriptとして使用するためにアクセス可能な一連のプロパティを持つオブジェクトを宣言します。

<script type="text/javascript">
//From http://mysite.example.com/awesome.js
alert(Awesome.Name);
</script>

ロード時間の違いにより、スクリプト内の「Awesome」オブジェクトの準備が整ったことを知らせる必要があるようです。これは自立する必要があるため、特定の JS フレームワークに依存しません。

独自のカスタム JS イベントを発行する必要がありますか?それとも、スクリプトが読み込まれるという単純な事実が、既存のページレベル イベントの 1 つによってキャプチャされるのでしょうか? 他にどのようにすればよいですか?

更新: 参考までに、から実行されている HTML ページに JS を含めるとhttp://mysite.example.com、Awesome オブジェクトが使用可能になり、データが取り込まれます。JS ファイルが別のドメインからインクルードされると、オブジェクトは実行時に未定義になります。

4

5 に答える 5

5

<script>タグの JavaScript コンテンツは手続き的に実行されるため、この

<script type="text/javascript" src="http://mysite.com/awesome.js" />
<script type="text/javascript">
    alert(Awesome.Name);
</script>

前のスクリプト タグAwesome.Nameで見つかった場合にのみ、内容を警告します。

すべてがページに完全に読み込まれたかどうかを理解するには、Firefox の場合は DOMContentLoaded を使用し、ie の場合は "onreadystatechange" を使用する必要があります。また、DOM のチェックを気にしない場合は、 windowオブジェクトのloadイベントをチェックするだけで済みます (簡単かもしれません)。

if ( document.addEventListener ) {
    document.addEventListener( "DOMContentLoaded", function(){
         doSomething();   
    }, false );
} else if ( document.attachEvent ) { // IE        
    document.attachEvent("onreadystatechange", function(){
        if ( document.readyState === "complete" ) {
            doSomething();
        }
    });
}
于 2009-02-24T17:37:34.473 に答える
1

グローバル スコープでアクセス可能なものはすべて、windowスコープを介してアクセスできます。したがって、これを使用できます:

if (window["Awesome"] != null) { /* do something */ }
于 2009-06-02T07:17:44.430 に答える
1

オブジェクトをインスタンス化する前にスクリプトで DOM をロードする必要がある場合は、いくつかのフレームワークを見て、それがどのように処理されるかを確認してから、コードに実装する必要があります。DOM をロードする必要がない場合は、オブジェクトがいつロードされるかに基づいて、オブジェクトを使用するタイミングについてユーザーが心配できるようにします。一般に、オブジェクトは、スクリプトがロードされるとすぐに使用できるようになるはずです。つまり、オブジェクトは、scriptそれを含むタグの直後に使用可能になるはずです。

于 2009-02-24T17:27:43.517 に答える
0

A)。スクリプト リクエストがブロックされていることに気付きましたか? あなたの質問への答えはそれに依存するので、これで大丈夫ですか、それとも回避したいですか。

B)。最小限の防弾でシンプルなメカニズムは、ページに存在することを保証できる指定されたメソッドを呼び出すことです。そのメソッドの実装は、ユーザーが何をするかによって決まります。他にも多くの方法が存在しますが、何かを推奨するためには、コードのライフサイクルと意図が正確に何であるかを知る必要があります。

于 2009-02-24T17:32:04.910 に答える
0

次のように簡単に使用できます。

<script type="text/javascript" src="myfunction.js"></script>
<script type="text/javascript" src="iwannaloadthis.js?onload=executeThis"></script>

前に指摘したように、実行 this は myfunction.js で定義する必要があります (または iwannaloadthis.js をロードしようとする前に)。

お役に立てれば!!

于 2012-06-01T15:29:48.647 に答える