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

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

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

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

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

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

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

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

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