背景: いくつかのスクリプト可能なメソッドを公開する共有ポイント Web パーツに Silverlight コントロールがあります。これらのメソッドを使用して Web サービスを呼び出し、一連のメニュー オプションを取得します。これらのメニュー オプションは、リスト内の項目をクリックすると表示される SharePoint ECB メニューに挿入されます。
私が抱えている問題は、Javascript で Silverlight コントロールの clientID を取得できるため、それを使用してスクリプト可能なメソッドを呼び出すことができることです。これが表示されるページには、同じ Silverlight コントロールの複数のインスタンスが含まれている可能性があり、コントロールの階層も異なる可能性があります....
clientID がハードコードされている現在のクライアント側の JS コードは次のとおりです...
function TestQueryMenu() {
var plugin = document.getElementById('ctl02_IntuitionModelBrowserControl');
var contextUri = document.getElementById('TestUri').value;
var key = contextUri;
plugin.Content.ModelBrowser.GetContextMenuOptionsCompleted = MenuItemsReceived;
plugin.Content.ModelBrowser.GetContextMenuOptionsAsync(key, contextUri);
}