2

Google クロージャ ライブラリと Dojo ライブラリの両方を使用するアプリケーションがあります。期待どおりに動作するインデックス ページには、次のものがあります。


<script type="text/javascript" src="runtime/src/lib/google-closure-rev26/closure/goog/base.js"></script>
<script type="text/javascript" src="runtime/src/lib/dojo_release_132_src/dojo/dojo.js"></script>
<script type="text/javascript" src="runtime/src/core/loader.js"></script>

実際の html ソースで script タグを 1 つだけ使用したいと考えています。そこで、次のことを試みました。


<head>
   <script type="text/javascript" src="runtime/src-bootstrap.js"></script>
</head>

そして、src-bootstrap.js で:


var head = document.getElementsByTagName("head")[0];

var s1 = document.createElement("script");
s1.type = "text/javascript";
s1.src = "runtime/src/lib/google-closure-rev26/closure/goog/base.js";


var s2 = document.createElement("script");
s2.type = "text/javascript";
s2.src = "runtime/src/lib/dojo_release_132_src/dojo/dojo.js";

var s3 = document.createElement("script");
s3.type = "text/javascript";
s3.src = "runtime/src/core/loader.js";

head.appendChild(s1);
head.appendChild(s2);
head.appendChild(s3);

ただし、これは FF では機能しません。core/loader.js は、dojo が完全にロードされる前に実行されます。これが機能しない理由はありますか?

4

3 に答える 3

0

一般的に言えば、ウィンドウの下に名前空間を追加し、外部リソースを編集します-

  1. action.js1 つまたはファイルをローカルに残しmain.jsます。これにより、メソッドが追加されます。できればグローバル スコープ (ウィンドウの下を意味します) の下にあります。

  2. 外部リソースを編集し、最後に 1 行追加し、 action.jsまたはmain.jsでメソッドを呼び出します。ロードが完了すると、「callback like」は、以前に DOM に追加したメソッドを実行します。JSONProtocol と非常によく似ています。

  3. 動的にロードされるリソースの最も複雑な組み合わせでも驚くほど機能します。

別のスレッド( https://stackoverflow.com/a/17226714/257319 )で Google-Closure-Library を動的にロードするために提供される、この非常によく似たソリューションの例を参照してください。

于 2013-06-21T02:25:48.677 に答える