セキュアウィンドウ公開 API (secure-window) の検証
このルールは、サポート対象の関数のみを検証し、window グローバルのプロパティが使用されます。
LockerService が有効化されている場合、フレームワークによってサポート対象外の API オブジェクトまたはコールの使用が阻止されます。つまり、Lightning コードで使用が許可されるのは次の機能です。
- JavaScript に組み込まれた機能 (「組み込み」機能)
- 公開され、サポートされている、Lightning コンポーネントフレームワークに組み込まれた機能
- 公開され、サポートされている、LockerService SecureObject オブジェクトに組み込まれた機能
LockerService より前に window グローバルにアクセスする場合、任意の関数をコールし、使用可能なプロパティにアクセスできます。LockerService が有効化されると、window グローバルは新しい SecureWindow オブジェクトで「ラップ」されます。このオブジェクトが window とその関数およびプロパティへのアクセスを制御します。SecureWindow によって、window グローバルの「安全な」機能のみを使用するように制限されます。
ルールの詳細
次のような window 関数およびプロパティがサポートされています。
- addEventListener
- setInterval
- setTimeout
- $A
- document
- location
- navigator
- window
次のパターンは問題と見なされます。
1{
2 onclick: function (cmp, evt, help) {
3 window.open('bar');
4 }
5}次のパターンは Lightning コンポーネントフレームワークの機能を使用しており、代替策として推奨されます。
1{
2 onclick: function (cmp, evt, help) {
3 setTimeout(function () {}, 100);
4 }
5}