Export to GitHub

gear5 - Incompatible_ja.wiki


このページは、Gear5が標準仕様に従っていない部分をリストにしたものです。

Web Database

INSERT以外のSQLを実行後に、ResultSet.insertIdにアクセスしてもエラーにならない

標準では、INSERT文以外のSQLを実行後にResultSet.insertIdにアクセスした場合、INVALID_ACCESS_ERRを発生させなければならないとなっていますが、通常のJavaScriptではプロパティアクセスをフックして処理を行う事が出来ないため、エラーになりません。 上記の状況では、insertIdの値はゼロとなります。

条件を指定せずにDELETE文を実行した後、ResultSet.rowsAffectedが常にゼロとなる

Gearsの仕様によります。こちらをご覧ください。

例外発生時のエラーコードは常に1とする

標準で規定されているようなエラーの詳細な状況は、Gear5からは判別できないため、エラーコードは常に1(The statement failed for database reasons not covered by any other error code. )となっています。

同期APIがワーカ以外の環境でも使えてしまう

仕様では、同期API(openDatabaseSyncなど)はワーカの環境でなければ利用できない事になっていますが、バージョン0.3の時点ではいつでも利用できてしまいます。将来的には、仕様に厳格に準拠する事を目指しています。

Web Storage

ストレージに対するインデックスアクセスやプロパティアクセスをサポートしていない

localStorage0でキーを取得したり、localStorage["key"]で値にアクセスすると言った機能がありません。普通のJavaScriptでは、インデックスアクセスやプロパティアクセスをフックして処理をする事ができないため、サポートできません。 代わりに、標準のメソッドであるlocalStorage.key(index)やlocalStorage.setItem("key", "value")、localStorage.getItem("key")を使用してください。

バージョン0.3では、SessionStorageをサポートしていない

SessionStorageの仕様を完全にエミュレートするための良い方法がまだ見つかっていないため、サポートされていません。

バージョン0.3では、StorageEventをサポートしていない

StorageEventは、ストレージに対する変更があった際に発生するイベントです。標準仕様では、「ストレージにアクセス可能な全てのdocumentに対してイベントを発生する」とありますが、これを実現する簡単な方法がまだ見つかっていないため、対応は保留されています。

ワーカからバックグラウンドでストレージを操作しても、lengthの値が更新されない

ワーカからバックグラウンドでストレージを操作しても、フォアグラウンドのlengthの値が更新されません。これを避けるには、現在のところ、以下のような方法を用いてlengthの値を取得するしかありません。

var len; // Gear5によって生成されたストレージには、ストレージのアイテム数を取得するための、 // gear5_getLength()メソッドが存在します。 if (typeof localStorage.gear5_getLength == "function") { len = localStorage.gear5_getLength(); } else { len = localStorage.length; }