☃️
Catalog Client Scriptで共通処理を実装する
概要
Client Scriptではisolate_script
項目をfalse
にすることで、定義した関数や変数を外部に公開することができる。
Catalog Client Scriptでは上記の方法で実装しようとしても公開することができず未定義としてエラーが発生してしまう。
VS UI Script
- 全Catalogで利用するような共通処理はUI Scriptで実装する
- 特定のカタログ中だけで利用する場合は以下の方法で実装する
解決策
- onLoadのCatalog Client Scriptを作成する
- 関数の項目で以下のように記述します
// Functionコンストラクタを利用して
// 読み込みにグローバルスコープに関数を登録するようにする
var resistVal = new Function("return this")();
function onLoad() {
//Type appropriate comment here, and begin script below
}
// 実際に利用する関数を記述しておく
resistVal.execFunction = function() {
console.log('execFunction');
};
- 呼び出し側では以下のように呼び出すことができます
execFunction();
メリット
- 共通処理をCatalogの中に閉じ込めることができる
- 直接グローバルスコープに登録するためプラットフォームの変更の影響を受けない
デメリット
- 常に新しい Function オブジェクトを生成することになる
- グローバルスコープに同名の関数が登録されることを考慮しなければならない
Discussion