モバイルとデスクトップの両方で機能する Visualforce ページの作成
実行されるコンテキストに適合するコードを記述して、Salesforce1 アプリケーションと Salesforce フルサイトの両方で有効に機能する Visualforce ページを作成します。
Salesforce1 はさまざまなナビゲーションコントロールとイベントを処理するフレームワークを提供します。sforce オブジェクトは Salesforce1 内のページにのみ挿入されるため、Salesforce フルサイト上で実行しているときに Visualforce ページでこのフレームワークを利用できません。つまり、Salesforce1 アプリケーションと Salesforce フルサイトの両方で共有されるページの場合、sforce オブジェクトが利用可能なときはこれを使用し、利用可能でないときは標準の Visualforce ナビゲーションを使用するようにコードを記述します。
たとえば、注文を簡易作成する @RemoteAction メソッドから JavaScript Remoting 要求が返った後に実行される簡単な JavaScript を次に示します。このコードは、カスタムアクションとして使用される Visualforce ページを元にしています。カスタムアクションがこのコードを Salesforce1 アプリケーションのアクションバーおよび Salesforce フルサイトのパブリッシャーメニューに追加します。このコードは両方の場所で機能する必要があります。コードの意図は、注文した取引先の詳細ページへの移動です。
1// Go back to the Account detail page
2if( (typeof sforce != 'undefined') && sforce && (!!sforce.one) ) {
3 // Salesforce1 navigation
4 sforce.one.navigateToSObject(aId);
5}
6else {
7 // Set the window's URL using a Visualforce expression
8 window.location.href =
9 '{!URLFOR($Action.Account.View, account.Id)}';
10}if ステートメントによって、sforce オブジェクトが利用可能かつ有用であるかどうかが確認されます。これは、ページが Salesforce1 内で実行されている場合のみ true です。sforce が利用可能な場合、Salesforce1 ナビゲーション管理システムは取引先の詳細ページへの移動に使用されます。
sforce オブジェクトが利用可能でない場合、これを使用する試みは JavaScript エラーとなり、ナビゲーションは行われません。その代わりに、取引先の詳細ページの URL を返す Visualforce 式を使用して、コードがウィンドウの URL を設定します。ナビゲーションイベントがフレームワークによって失われるため、Salesforce1 でこの方法を使用するのは好ましくないかもしれませんが、通常の Visualforce では必要になります。