次のようなページに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 関数を追加するように要求します。