プラグインスタイルのアーキテクチャの一環としてjavscriptをロードしていて、次のような問題がある場合は、この問題が正しいかどうかわかりません。javascriptファイルから関数を抽出することは可能ですか?
特定のノードにプラグインへの参照、そのプラグインのjsonの説明で提供されたURLごとにそのプラグインをロードしたい。説明は、次の(またはその機能的等価物)のようなものがあります:
{
"pluginSrc" : "http://mysite.com/plugins/1204.js",
"configData" :
{
"someData", "someValue",
"someMoreData", "etc"
}
}
javascriptの負荷を、私は、関数名はwindowオブジェクトにとあれば存在するかどうかをチェックするonloadイベントハンドラを持っていますしたがって、その関数の新しいインスタンスを作成し、それをconfigデータに渡す(多かれ少なかれ)、この部分はいくつかの例外を除いて非常にうまく機能します。
時々、私は呼び出す必要のある関数の名前への参照がなく、jsonから取得する方法がありません。理想的なのは、スクリプトのonloadコールバックでウィンドウオブジェクトにどの関数が追加されたのかを知り、その関数のインスタンスを作成できるかどうかです。これは可能ですか?私は現代のブラウザ、特にWebkitについて心配する必要があります。申し訳ありませんが、質問が明確でない場合は、私は明確にすることができますが、最小限の例に達するために書くべきコードがたくさんあるので、フィドルを作成するのは難しいかもしれません。
私は今のところ考えていることは
function MediaAnalytics(){};
var LoadedClass = MediaAnalytics;
、スクリプトがロードされたときにちょうどLoadedClassのインスタンスを作成するようにロードされたスクリプトファイルでグローバル変数のいくつかの種類を作成することですが、これは及ばない私はいつもプラグインを書いているわけではないので、万能薬の。
EDIT:これらのスクリプトは、ほとんど同じドメインのものではありません。
空白のiframeを作成し、そこにJSを読み込み、関数をiframeの 'window'からメインの' window'にコピーするとどうなりますか? (私はそれがうまくいくかどうか分かりませんが、そこに投げ込むだけです) –
興味深い考え方です。残念ながら、このプロジェクトはphonegap経由でAndroid/iPhoneにエクスポートされ、iframeは私がむしろ避けたいすべての種類の問題を引き起こす可能性があります。しかし、素晴らしい提案! – Shane