LWS に対するサードパーティライブラリの考慮事項
サードパーティのスクリプトは、LWS を有効にして実行したときに次のような動作をする場合、問題が発生する可能性があります。
サードパーティスクリプトの中には、グローバル window オブジェクトに自身が追加されることを期待するものがあります。ただし、LWS ではこのようなスクリプトは、Sandbox からグローバル window オブジェクトの仮想コピーにアクセスするように制限されています。
実際のグローバル範囲にアクセスするのではなく、LWS Sandbox のグローバル範囲でコードが実行されるようにするために、スクリプトコードで self をglobal に割り当てるよう修正します。
このコードでは、this は global としてクロージャー関数に渡されます。LWS では、this と global は未定義なので、このコードでは global が Sandbox の global として評価されるように記述しています。
サードパーティライブラリのスクリプトが明示的に "use strict" に設定されている場合、LWS で実行中に、コンポーネントがそのスクリプトを使用すると、ブラウザでエラーが発生することがあります。
例えば、スクリプトがグローバルオブジェクトに何かを設定しようとすると、エラーが発生します。LWS では最も厳格なモードの制限を暗黙的に適用しますが、JavaScript サンドブックスの仮想グローバルオブジェクトへの書き込みは許可しています。厳格モードをコードで明示的に設定すると、LWS と干渉します。
解決するには、サードパーティスクリプトの "use strict" を削除します。
または、前述のとおり self を global に割り当てるように、サードパーティコードを変更します。