ナビゲーションの管理
- ユーザが、通常はナビゲーションメニューまたはアクションバーのアクションから Visualforce ページを呼び出します。
- Visualforce ページと、ページによってコールされたカスタムコントローラや拡張コードが読み込まれ実行されます。
- ユーザが何らかの方法で (フォームへの値の入力など) ページを操作します。
- ユーザがページで、フォームの送信など、変更をコミットするアクションを実行します。
- コントローラや拡張コードが実行され、変更を Salesforce に保存して、アクションの結果を返します。
- Visualforce ページが、JavaScript レスポンスハンドラを使用してアクシ���ンの結果を受信し、結果が正常の場合はその応答として、ユーザをアクションの結果を示す新しいページにリダイレクトします。
もう 1 つの一般的な用途は、単にアプリケーションの Visualforce ページから別のページに移動するリンクやその他のユーザインターフェースコントロールをページに追加することです。このナビゲーションも、アプリケーションのナビゲーションフレームワークで簡単に管理されます。
これらのケースでは、特別ユーティリティ JavaScript オブジェクトである sforce.one でナビゲーションが処理されます。Visualforce ページが Salesforce アプリケーション内で実行される場合、sforce.one オブジェクトがすべての Visualforce ページに自動的に追加されます。このオブジェクトには、実行時にナビゲーションイベントをトリガする多数の関数があります。これらの関数を使用するには、ページの JavaScript コードから直接コールするか、コールをクリックハンドラとしてページの要素に追加します。
1function setupMarker(){
2
3 // Use JavaScript nav function to determine if we are
4 // in the Salesforce app and set navigation link appropriately
5 var warehouseNavUrl =
6 'sforce.one.navigateToSObject(\'' + warehouse.Id + '\')';
7
8 // Wrap the warehouse details with the link to
9 // navigate to the warehouse details
10 var warehouseDetails =
11 '<a href="javascript:' + warehouseNavUrl + '">' +
12 warehouse.Name + '</a><br/>' +
13 warehouse.Street_Address__c + '<br/>' +
14 warehouse.City__c + '<br/>' +
15 warehouse.Phone__c;
16
17 // Create a panel that will appear when a marker is clicked
18 var infowindow = new google.maps.InfoWindow({
19 content: warehouseDetails
20 });
21
22 // ...
23}- window.location.href を使用して、ブラウザの URL を直接操作しないでください。アプリケーションのナビゲーション管理システムではこの操作はうまく機能しません。
- ナビゲーション URL で target="_blank" を使用しないでください。アプリケーション内で新しいウィンドウを開くことはできません。
Canvas フレームワーク内の navigation メソッド
Canvas を使用している場合、Salesforce アプリケーションでキャンバスアプリケーションやキャンバス個人用アプリケーションのナビゲーションを制御するシンプルな方法が用意されています。
Lightning Platform のメソッドを使用して、アプリケーションのナビゲーションを制御できます。Canvas フレームワーク内のこれらのメソッドは、JavaScript ライブラリにあるイベントです。いずれかの navigation メソッドをキャンバスコードからコールすると、Salesforce にイベントが送信されます。Salesforce は、このペイロードを読み取って指定の移行先にユーザを移動します。
名前とペイロードを使用して、navigation メソッドをイベント変数として参照します。次に例を示します。
var event = {name:"s1.createRecord", payload: {entityName: "Account", recordTypeId: "00h300000001234"}};
この新しいメソッドの使用についての詳細は、『Canvas 開発者ガイド』の「キャンバスアプリケーションで使用する Salesforce アプリケーションの navigation メソッド」を参照してください。