1

次のようなページに2つのSilverlightインスタンスが埋め込まれています(コンテンツは関連する詳細のみに簡略化されています):-

<object id="SL1" data="data:application/x-silverlight-2," type="application/x-silverlight-2">
   <param name="source" value="/clientBin/Common.xap"></param>
   <param name="minRuntimeVersion" value="3.0.40624.0"></param>
   <param name="windowless" value="True"></param>
   <param name="onload" value="silverlight_onload"></param>
   <param name="initParams" value="some configuration here"></param>
 </object>

<object id="SL2" data="data:application/x-silverlight-2," type="application/x-silverlight-2">
   <param name="source" value="/clientBin/Common.xap"></param>
   <param name="minRuntimeVersion" value="3.0.40624.0"></param>
   <param name="windowless" value="True"></param>
   <param name="onload" value="silverlight_onload"></param>
   <param name="initParams" value="a different configuration here"></param>
 </object>

ご覧のとおり、両方ともobjects同じ xap を指していますが、initParams の内容は異なります。

ただし、onload パラメータは同じ関数名を指していることに注意してください。この質問のこの特定の部分は不変です。

私が持っているグローバルレベルのjavascriptの他の場所:-

function silverlight_onload(sender, eventargs)
{
  //Magic pixie dust here
}

目標は、 を取得してsender、どのオブジェクト要素がイベントのソースであるかを判断することです。率直な (ただし、この質問のために受け入れられない) 答えは、2 つの異なる関数を使用することです。SL オブジェクトごとに新しい関数をグローバル名前空間に追加する必要がないものを探しています。

おまけに、SL がホスト ブラウザーからもう少し支援を得られず、onload パラメーターを onlick などの他の要素イベントのように処理できなかった理由を教えてくれる人に称賛を送ります。たとえば、ブラウザにeval("function() {" + onload + "}"onload イベントに return 関数を追加するように要求します。

4

2 に答える 2

3

JavaScript で initparams を取得し、それを使って何かをすることが目標ですか? もしそうなら、あなたはすることができます:

sender.getHost().InitParams

getHost() は、実際のプラグイン オブジェクトを返します。詳細については、msdn ページを参照してください。initparam として設定しない限り、オブジェクトの ID を取得する方法がわかりません。

于 2009-09-09T20:40:12.010 に答える
0

最初に呼び出すポイントは、silverlight.js リファレンスです。

基本的に、「silverlight_onload」JavaScript 関数は実際の html オブジェクト要素を送信者として取得するため、ID を確認すると、必要なものが得られます。

SL がホストからこれ以上支援を受けられない理由は、html オブジェクトに onload イベントがないためです。オブジェクト要素参照。


ドキュメントは現実を反映していないように見えるので、Silverlight コントロール自体から JavaScript メソッドを呼び出す必要があります。初期化パラメーターの 1 つとして ID を渡すだけです。

于 2009-09-09T08:31:39.943 に答える