この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

sforce.one での API バージョンの処理方法

sforce.one オブジェクトは、新規リリースで頻繁に改善されています。下位互換性を持たせるため、sforce.one でバージョン固有の動作が提供され、アプリケーションでは特定のバージョンの sforce.one を使用できます。

デフォルトで、sforce.one では要求された Visualforce ページの API バージョンと同じバージョンが使用されます。たとえば、Visualforce ページに API バージョン 30.0 がある場合、sforce.one を使用する同ページの JavaScript では、デフォルトで sforce.one の API バージョン 30.0 が使用されます。

つまり、Visualforce ページが新しい API バージョンに更新されると、このページでは sforce.one の更新されたバージョンが自動的に使用されます。上記の例では、この Visualforce ページが API バージョン 31.0 に更新されると、sforce.one を使用するアプリケーション機能では sforce.one の API バージョン 31.0 が使用されます。

sforce.one の新しい API バージョンの更新された動作によって、ページの機能との互換性の問題が発生する場合は、問題を修正するために 3 つのオプションがあります。
  • Visualforce ページの API バージョンを前のバージョンに戻します。この作業ではコード変更は不要です。
  • ページの機能のコードを更新して問題を修正します。これが最善の解決法ですが、デバッグが必要な場合があり、確実にコード変更が必要になります。
  • 特定のバージョンの sforce.one を使用します。この解決法では、最小限のコード変更が必要になることが多くあります。

sforce.one は Winter '14 (API バージョン 29.0) で追加され、Summer '14 (API バージョン 31.0) まではバージョン設定されていませんでした。31.0 より前のすべてのバージョンの sforce.one は、バージョン 31.0 とまったく同じです。Visualforce に有効な任意のバージョン、つまりバージョン 15.0 から現在の API バージョンまで、sforce.one のバージョンを指定できます。

メモ

特定のバージョンの sforce.one の使用

特定のバージョンの sforce.one を使用するには、sforce.one.getVersion() 関数を使用して、API バージョン、および特定のバージョンの sforce.one を使用する必要のあるコールバック関数を入力します。このコールによって、適切なバージョンの sforce.one が自動的に読み込まれます。

sforce.one.getVersion() に使用する署名は、次のとおりです。
1sforce.one.getVersion(versionString, callbackFunction);

versionString はアプリケーションで必須の API バージョンです。必ず 2 桁数字、ピリオド、1 桁数字になります (例、30.0)。無効なバージョン文字列を使用したコールは、エラーを表示することなく失敗します。

callbackFunction は、特定のバージョンの sforce.one を使用する JavaScript 関数です。sforce.one.getVersion() は非同期で実行され、要求されたバージョンの sforce.one の読み込みが完了すると、コールバック関数がコールされます。コールバック関数は、指定された API バージョンの sforce.one オブジェクトであるパラメーターを 1 つ受け取ります。グローバル sforce.one の代わりに、渡されたオブジェクトを使用して、アプリケーションで必須の API バージョンに適合する sforce.one にコールを実行します。

特定のバージョンの sforce.one の使用例

以下のすべての例では、次の入力ボタンに Create Account 関数が追加されます。
1<input type="button" value="Create Account" onclick="btnCreateAccount()" id="btnCreateAcct"/>

Visualforce ページの API バージョンへのデフォルト設定

デフォルトのバージョンの sforce.one (Visualforce ページの API バージョンに対応するバージョン) を使用するアプリケーションコードでは、バージョンを要求する必要はありません。このバージョンの使用は自動的に行われ、コードは簡単です。
1<script>
2    function MyApp() {
3        this.createAccount = function() {
4            sforce.one.navigateToURL("/001/e");
5        };
6    } 
7
8    var app = new MyApp();
9
10    function btnCreateAccount() {
11        app.createAccount();
12    }
13</script>

アプリケーション機能は MyApp オブジェクト内で作成され、イベント (ボタンのクリック) が発生すると、イベント処理関数によりアプリケーション関数がコールされます。ベストプラクティスでは、アプリケーションイベント処理からアプリケーション機能を分離することで、バージョン固有の sforce.one バージョンを使用するための設定が整います。

特定の sforce.one API バージョンの使用 (単純)

特定のバージョンの sforce.one を使用するには、オブジェクトのバージョン付きインスタンスへの参照を取得および保存します。次に、このオブジェクトを使用して sforce.one コールを実行します。最も単純な方法は、MyApp オブジェクト内に保存することです。次のサンプルでは、sforce.one のバージョン付きインスタンスへの参照を太字で示しています。
1<script>
2    function MyApp(sfone) {
3        this.createAccount = function() {
4            sfone.navigateToURL("/001/e");
5        };
6    } 
7        
8    var app30 = null;
9
10    function btnCreateAccount() {
11        // Create our app object if not already defined
12        if(!app30) {
13            // Create app object with versioned sforce.one
14            sforce.one.getVersion("30.0", function(sfoneV30) {
15                app30 = new MyApp(sfoneV30);
16                app30.createAccount();
17            });
18            return;
19        }
20        app30.createAccount();        
21    }
22</script>

上記の例では、イベント処理関数が 1 つ目の例から拡張され、sforce.one のバージョン固有インスタンスの作成が含まれています。アプリケーションで複数のバージョンを合わせて使用する必要がある場合は、適切なバージョンと名前で複数の MyApp インスタンスを作成できます。ただし、複数のバージョンを使用すると扱いにくくなります。代わりに、次のアプローチをお勧めします。

特定の sforce.one API バージョンの使用 (最善)

アプリケーションコードを整理する良い方法は、イベント処理を分離しておくために、コードのアプリケーション初期化ブロック内で sforce.one のバージョン固有インスタンスを作成することです。
1<script>
2    function MyApp(sfone) {
3        this.createAccount = function() {
4            sfone.navigateToURL("/001/e");
5        };
6    } 
7        
8    var app30 = null;
9
10    // Initialize app: get versioned API, wire up clicks
11    sforce.one.getVersion("30.0", function(sfoneV30) {
12        // Create app object with versioned sforce.one
13        app30 = new MyApp(sfoneV30);
14
15        // Wire up button event
16        var btn = document.getElementById("btnCreateAcct");
17        btn.onclick = btnCreateAccount;
18    });
19
20    // Events handling functions
21    // Can't be fired until app is defined
22    function btnCreateAccount() {
23        app30.createAccount();
24    }
25</script>

このサンプルでは、アプリケーション初期化が空白とコメントのみで分離されていますが、より適切にカプセル化するために関数単位に分離することができます。

特定の sforce.one API バージョンの使用 (同期)

特定のバージョンの sforce.one の JavaScript を手動でページに含めて、sforce.one の同期モードをトリガーできます。ライブラリの URL の形式は /sforce/one/sforceOneVersion/api.js です。次に例を示します。
1<script src="/sforce/one/30.0/api.js"></script>
2<script>
3    function MyApp(sfone) {
4        this.createAccount = function() {
5            sfone.navigateToURL("/001/e");
6        };
7    } 
8        
9    var app = null;
10
11    sforce.one.getVersion("30.0", function(sfoneV30) {
12        app = new MyApp(sfoneV30);
13    });
14
15    // Events handling function
16    // Can't be fired until app is defined
17    function btnCreateAccount() {
18        app.createAccount();
19    }
20</script>

同期モードが必要な場合もありますが、非同期バージョンをお勧めします。sforce.one ライブラリの正しいバージョンを手動で含めるのを忘れると、診断の難しいバグがコードに含まれます。