それを意味しているかどうかはわかりませんが、JavaScript ファイル内で、これらの 3 行を最初に宣言すると、オブジェクト モデルを使用できます。
/// <reference name="MicrosoftAjax.js" />
/// <reference path="file://C:/Program Files/Common Files/Microsoft Shared/Web Server Extensions/14/TEMPLATE/LAYOUTS/SP.core.debug.js" />
/// <reference path="file://C:/Program Files/Common Files/Microsoft Shared/Web Server Extensions/14/TEMPLATE/LAYOUTS/SP.debug.js" />
これは関連するコードであり、{SelectedItem} などを呼び出すことなく動作します。
var items = SP.ListOperation.Selection.getSelectedItems();
var listID = SP.ListOperation.Selection.getSelectedList();
これにより、クライアント オブジェクト モデルの (パーツ) が読み込まれるので、そのまま続行できると思います。これは IntelliSense でサポートされているためです。
Edit2: JavaScriptのみでリストを取得して使用するもう1つの方法は、
var web;
var context;
var listTitle = "ListName";
function InitiateThisScript(itemId) {
context = new SP.ClientContext.get_current();
web = context.get_web();
list = web.get_lists().getByTitle(listTitle);
item = list.getItemById(itemId);
context.load(web;
context.load(list);
context.load(item);
context.executeQueryAsync(handleItem(item, list));
}
この方法では、ボタンを定義した Elements.xml で、それを呼び出す必要があります。
CommandAction="javascript:InitiateThisScript('{SelectedItemId}','');" />
Edit3: セキュリティ チェックなしでこの JavaScript を使用する場合は注意してください。たとえば、このソリューションを 2 つのリストがあるサイトに配信したとします。この JavaScript を使用することを提案した最初のものと、2 つ目のもの。両方のリストに表示されるカスタム ボタンがある場合は、2 番目のリストで作業しますが、ボタンを使用すると、可能な限り最初のリストが起動されます。
コンテンツをクリアするボタンがあり、両方のリストに「タイトル」という列があるとします。2番目のリストにいて、最初のリストよりも「タイトルを削除」ボタンを押すと、同じitemIdを持つアイテムのタイトルが削除されます。2 番目のリストでは何も起こりません。
指定されたリストが作業中のリストである場合、これはボタンの可視性とチェックなしから表示されます。
シェギット
編集:タブをスクロールすると、これが見つかりました:EcmaScriptとCOMを使用してフォルダーからアイテムを取得します