バージョンを指定しなかったので、完全なFrameworkAPIで8.5以降を想定します
それはページイベントの実行順序に帰着します-優先順位を手動で指定する方法はありません。
ただし、ウィジェットのInitイベントで/js/widget.jsをロードし、ページのLoadイベントで他のイベントをロードする場合、たとえば、widget.jsを最初にロードする必要があります。これが上記の説明に理想的かどうかはわかりません。上記のコードでウィジェットJSを他の2つの間にロードするように要求している可能性がありますが、これは不可能です。少なくとも、箱から出してはいけません。
ただし、カスタムソリューションでできることがあるかもしれません。たとえば、私はテストしていませんが、このようなものは機能するはずです。HTTPContextを使用して、あるイベントから次のイベントにオブジェクトを渡します。これは、ウィジェット、ページ、マスターなどで機能します。
// adding javascript objects to http context in init function on page/widget
protected void Page_Init(object sender, EventArgs e)
{
List<JSObject> AddOns;
object StoredAddOns = HttpContext.Current.Items["JSAddOns"];
if (StoredAddOns == null)
{
AddOns = new List<JSObject>();
}
else
{
AddOns = (List<JSObject>)StoredAddOns;
}
// javascript being added to the list in the wrong order intentionally
AddOns.Add(new JSObject() { name = "LastJS", path = "/js/last.js", priority = 10 });
AddOns.Add(new JSObject() { name = "WidgetJS", path = "/js/widget.js", priority = 5 });
HttpContext.Current.Items["JSAddOns"] = AddOns;
}
// reading js objects from httpcontext and adding them to the page using framework ui api
// this could just as easily be prerender - as long as the event that reads the objects is after the event that writes them
protected void Page_Load(object sender, EventArgs e)
{
object StoredAddOns = HttpContext.Current.Items["JSAddOns"];
if (StoredAddOns != null)
{
var AddOns = (List<JSObject>)StoredAddOns;
// using LINQ to order the JS objects by custom-defined priority setting
var SortedAddOns = AddOns.OrderBy(j => j.priority);
// looping through items in priority order to add to the page
foreach (var js in SortedAddOns)
{
Ektron.Cms.Framework.UI.JavaScript.Register(this, js.path, true);
}
}
}
// the custom js object
public class JSObject
{
public int priority { get; set; }
public string path { get; set; }
public string name { get; set; }
public JSObject()
{
priority = 0;
path = string.Empty;
name = string.Empty;
}
}
補足: SitePathを使用する場合は、次の文字列を/で開始しないでください。それ以外の場合、Ektronアプリケーションがサイトのルートにあると仮定するとパスは//js/widget.jsになり、サブフォルダーまたは子アプリケーションにある場合は/path//js/widget.jsになります。