プライマリ・コンテンツに移動

Oracle® Application Express APIリファレンス リリース5.1 E85937-02 |
| 目次 | 索引

前 | 次 |

# 31.12 apex.storageネームスペース

`apex.storage`ネームスペースには、Cookieやセッション・ストレージなど、ブラウザの格納機能に関連する機能がすべて含まれます。

- ローカルおよびセッション・ストレージについて
- apex.storage.getCookie
- apex.storage.hasLocalStorageSupport
- apex.storage.getScopedLocalStorage
- apex.storage.getScopedSessionStorage
- apex.storage.hasSessionStorageSupport
- apex.storage.setCookie

## 31.12.1 ローカルおよびセッション・ストレージについて

ローカル・ストレージとセッション・ストレージをまとめてWebストレージと言います。ソース(Webサイト)に対応するキー/値ペアを安全に格納するブラウザ機能です。キーと値は文字列です。Webストレージのストレージ容量は、Cookieより大きいものの、無制限ではありません。Cookieと比べたもうひとつの利点は、キー/値ペアがリクエストごとに送信されないことです。

ローカル・ストレージもセッション・ストレージも、名前/値ペアを設定、取得、削除する際に同じAPIを使用します。違いは、セッション・ストレージがセッション終了時に消えてしまうのに対して、ローカル・ストレージはブラウザの再起動後でも使用できるということです。ローカル・ストレージに格納されるデータは、ユーザーの判断で自由にブラウザから制限または削除できます。サーバーに格納されるデータとは異なり、ローカル・ストレージは異なるマシン上のブラウザ間でも、あるいは同じマシン上の異なるブラウザ間でも共有されません。

APEXは、複数のアプリケーションや複数のワークスペース、さらには複数のワークスペースで実行される同じアプリケーションのインスタンスもサポートしているため、Webストレージの使用時に競合が発生する可能性もあります。単一のAPEXインスタンス(単一のソース、またはWebサイト)からのアプリケーションはすべて、同じWebストレージ領域を共有するからです。`apex.storage.getScopedLocalStorage`と`apex.storage.getScopedSessionStorage`では、アプリケーションIDと、オプションで追加される情報(ページID、リージョンIDなど)に基づいて、ストレージをスコープにパーティション化することで、この問題を解決しています。スコープは、すべてのストレージ・キーに接頭辞を付けて作成します。こうすると、異なるアプリケーションや、同じアプリケーションの異なるインスタンスが同じキーを使用する場合に競合が回避されますが、これが安全なパーティションになるわけではありません。機密情報をWebストレージに格納する前に、このような点を考慮してください。

## 31.12.2 apex.storage.getCookie

Cookie名(`pName`)の値を戻します。

パラメータ

表31-65 apex.storage.getCookie

名前 | タイプ | 説明
--- | --- | ---
`pName` | String | Cookieの名前。

戻り値

Cookieの文字列値。

## 31.12.3 apex.storage.hasLocalStorageSupport

ブラウザがローカル・ストレージAPIをサポートしている場合は`true`、それ以外の場合はfalseを戻します。最新のブラウザはほとんどこの機能をサポートしていますが、ユーザーがオフにできるブラウザもあります。

パラメータ

なし

戻り値

ブラウザがローカル・ストレージAPIをサポートしている場合は`true`、それ以外の場合は`false`。

## 31.12.4 apex.storage.getScopedLocalStorage

`localStorage`オブジェクトを隠すシン・ラッパーで、`pOptions`パラメータによって定義される接頭辞にすべてのキーのスコープを設定します。`localStorage`がサポートされていない場合でも、戻されるオブジェクトは使用できますが、何の効果もありません。したがって、このファンクションをコールする前に、`apex.storage.hasLocalStorageSupport`を使用してサポート状況をテストする必要はありません。

パラメータ

表31-66 apex.storage.getScopedLocalStorage

名前 | タイプ | 説明
--- | --- | ---
`pOptions` | Object | ローカル・ストレージのスコープを定義するオブジェクト。戻された`localStorage`ラッパー・オブジェクトによって使用されるストレージ・キー接頭辞を定義します次に示す`pOptions`のプロパティ表を参照してください。

表31-67 pOptionsのプロパティ

名前 | タイプ | 説明
--- | --- | ---
`prefix` | String | すべてのキーに追加される静的な接頭辞文字列。デフォルトは空の文字列です。
`useAppId` | ブール | `true`の場合、キーにアプリケーションIDが含まれます。デフォルトは`true`です。
`usePageId` | ブール | `true`の場合、キーにアプリケーション・ページIDが含まれます。デフォルトは、`false`です。
`regionId` | String | リージョンなどページの一部を示す追加の文字列。

戻り値

`localStorage`ラッパー・オブジェクト。このオブジェクトのプロパティとファンクションは、ブラウザのStorageインタフェースと同じです。

表31-68 localStorageラッパー

プロパティ | 説明
--- | ---
`prefix` | APEX固有のプロパティ。このスコープ付きストレージ・オブジェクトに付く接頭辞。
`length` | スコープ付きストレージ・オブジェクトでの項目の数。
`key( n )` | スコープ付きストレージ・オブジェクトでn番目のキーを戻します。
`getItem( key )` | 指定したキーの値を戻します。
`setItem( key, data )` | 指定したキーの値をデータに設定します。
`removeItem( key )` | 指定したキーを削除します。
`clear` | スコープ付きストレージ・オブジェクトからすべてのキーを削除します。
`sync()` | APEX固有のファンクション。このオブジェクトの外部でキーが追加または削除された可能性がある場合に、lengthプロパティが正しいことを確認するために使用されます。

例

次の例では、`Acme`という接頭辞とアプリケーションIDを使用してすべてのキーの範囲を決めるローカル・ストレージ・オブジェクトを作成します。次に、`setting1`というアイテムを設定し、取得します。

    var myStorage = apex.storage.getScopedLocalStorage( {
        prefix: "Acme",
        useAppId: true
    });
    myStorage.setItem( "setting1", "on" );
    setting = myStorage.getItem( "setting1" ); // returns "on"

## 31.12.5 apex.storage.getScopedSessionStorage

`sessionStorage`オブジェクトを隠すシン・ラッパーで、`pOptions`パラメータによって定義される接頭辞にすべてのキーのスコープを設定します。sessionStorageがサポートされていない場合でも、戻されるオブジェクトは使用できますが、何の効果もありません。したがって、このファンクションをコールする前に、apex.storage.hasSessionStorageSupportを使用してサポート状況をテストする必要はありません。

パラメータ

表31-69 apex.storage.getScopedSessionStorage

名前 | タイプ | 説明
--- | --- | ---
`pOptions` | Object | セッション・ストレージのスコープを定義するオブジェクト。戻された`sessionStorage`ラッパー・オブジェクトによって使用されるストレージ・キー接頭辞を定義します次に示す`pOptions`のプロパティ表を参照してください。

表31-70 pOptionsのプロパティ

名前 | タイプ | 説明
--- | --- | ---
`prefix` | String | すべてのキーに追加される静的な接頭辞文字列。デフォルトは空の文字列です。
`useAppId` | ブール | `true`の場合、キーにアプリケーションIDが含まれます。デフォルトは`true`です。
`usePageId` | ブール | `true`の場合、キーにアプリケーション・ページIDが含まれます。デフォルトは、`false`です。
`regionId` | String | リージョンなどページの一部を示す追加の文字列。

戻り値

`sessionStorage`ラッパー・オブジェクト。このオブジェクトのプロパティとファンクションは、ブラウザのStorageインタフェースと同じです。

表31-71 sessionStorage

プロパティ | 説明
--- | ---
`prefix` | APEX固有のプロパティ。このスコープ付きストレージ・オブジェクトに付く接頭辞。
`length` | スコープ付きストレージ・オブジェクトでの項目の数。
`key( n )` | スコープ付きストレージ・オブジェクトでn番目のキーを戻します。
`getItem( key )` | 指定したキーの値を戻します。
`setItem( key, data )` | 指定したキーの値をデータに設定します。
`removeItem( key )` | 指定したキーを削除します。
`clear` | スコープ付きストレージ・オブジェクトからすべてのキーを削除します。
`sync()` | APEX固有のファンクション。このオブジェクトの外部でキーが追加または削除された可能性がある場合に、lengthプロパティが正しいことを確認するために使用されます。

例

次の例では、`Acme`という接頭辞とアプリケーションIDを使用してすべてのキーの範囲を決めるセッション・ストレージ・オブジェクトを作成します。次に、`setting1`というアイテムを設定し、取得します。

    var myStorage = apex.storage.getScopedSessionStorage( {
        prefix: "Acme", useAppId: true
    });
    myStorage.setItem( "setting1", "on" );
    setting = myStorage.getItem( "setting1" ); // returns "on"

## 31.12.6 apex.storage.hasSessionStorageSupport

ブラウザがセッション・ストレージAPIをサポートしている場合は`true`、それ以外の場合はfalseを戻します。最新のブラウザはほとんどこの機能をサポートしていますが、ユーザーがオフにできるブラウザもあります。

パラメータ

なし

戻り値

ブラウザがセッション・ストレージAPIをサポートしている場合は`true`、それ以外の場合は`false`。

## 31.12.7 apex.storage.setCookie

Cookie (`pName`)を指定の値(`pValue`)に設定します。

パラメータ

表31-72 apex.storage.setCookie

名前 | タイプ | 説明
--- | --- | ---
`pName` | String | 設定するCookieの名前。
`pValue` | String | Cookieを設定する値。