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
に割り当てるように、サードパーティコードを変更します。