LWS に対するサードパーティライブラリの考慮事項

サードパーティのスクリプトは、LWS を有効にして実行したときに次のような動作をする場合、問題が発生する可能性があります。

グローバル window オブジェクトに設定されたサードパーティライブラリ 

サードパーティスクリプトの中には、グローバル window オブジェクトに自身が追加されることを期待するものがあります。ただし、LWS ではこのようなスクリプトは、Sandbox からグローバル window オブジェクトの仮想コピーにアクセスするように制限されています。

実際のグローバル範囲にアクセスするのではなく、LWS Sandbox のグローバル範囲でコードが実行されるようにするために、スクリプトコードで selfglobal に割り当てるよう修正します。

1(function (global) {
2  global = global || self;
3  global.myFunction = function () {};
4})(this);

このコードでは、thisglobal としてクロージャー関数に渡されます。LWS では、thisglobal は未定義なので、このコードでは global が Sandbox の global として評価されるように記述しています。

サードパーティライブラリが厳格モードに設定される 

サードパーティライブラリのスクリプトが明示的に "use strict" に設定されている場合、LWS で実行中に、コンポーネントがそのスクリプトを使用すると、ブラウザでエラーが発生することがあります。

例えば、スクリプトがグローバルオブジェクトに何かを設定しようとすると、エラーが発生します。LWS では最も厳格なモードの制限を暗黙的に適用しますが、JavaScript サンドブックスの仮想グローバルオブジェクトへの書き込みは許可しています。厳格モードをコードで明示的に設定すると、LWS と干渉します。

解決するには、サードパーティスクリプトの "use strict" を削除します。

または、前述のとおり selfglobal に割り当てるように、サードパーティコードを変更します。

The Japanese Summer '24 guide is now live

日本語の Summer '24 ガイドが公開されました! 「Component Reference (コンポーネントリファレンス)」は、以前と同様にコンポーネントライブラリにあります。