1

[ https://github.com/olark/lightningjs]を参照して、別のウィンドウの名前空間に js をロードします。

以下のような sample.js という名前のスクリプト ファイルをテストしたところ、別のウィンドウ名前空間にロードする必要があります。

function testjs(){
console.log("sample");

}

html に lightningjs-embed.js と lightining-bootstrap.js を含めます。

<html>
<head>
<title>testing light js</title>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/lightningjs-master/lightningjs-embed.js" ></script>
<script type="text/javascript" src="js/lightningjs-master/lightningjs-bootstrap.js"></script>

<script type="text/javascript">/*{literal}<![CDATA[*/
/*** lightningjs-embed.min.js ***/
window.piratelib = lightningjs.require("piratelib","js/sample.js");
/*]]>{/literal}*/</script>

console.log("modules",lightningjs.modules);
piratelib("testjs");

コンソールでは、2 つのオブジェクトを 1 つを lightningjs として、もう 1 つを Piratelib として表示できます。私は、piratelib("testjs") を呼び出した後、コンソールで "サンプル" を取得することを期待しています。しかし、コンソールでサンプルを取得していません。コンソールで Piratelib("testjs") を試すと、表示されます

function promiseFunction() {
                    console.log("promisdeId",promiseResponseId);
                    promiseFunction.id = promiseResponseId;
                    return modules[namespace].apply(promiseFunction, arguments)
                }

sample.js の実際の関数の代わりに

function testjs(){
console.log("sample");

}

js の競合を避けるために、別の window.namespace の下に js をロードするためのいくつかのアイデアを提案してください。lightningjs を使用して正しい方法で関数を呼び出しているかどうかを明確にしてください。前もって感謝します。

4

1 に答える 1

0

LightningJS によって処理される関数は promise を返すため、次のようになります。

piratelib("testjs").then(function(result) { 
  console.log(result);
}, function(error) {
  // Handle your error
});
于 2015-03-29T23:10:58.840 に答える