1

jQuery .load(oracle apex url)クエリを使用したいと思います。メニューを表示/非表示にするナビゲーションメニューを備えた固定バナーを保持するように設定したメインページがあります。

このメインページテンプレート内には、メニュー項目が選択されたときに起動するjQueryコードもあります。これは、基本的に、このOracleApExアプリケーション内の任意のページの下にある「メインコンテンツ」divに読み込まれます。

$("#main-content").load(actualPageURL);

このメインページ内には、次のHTML設定で作成した「コンテンツ」領域もあります。

<div id="page-wrap">
  <div id="main-content">
  </div>
</div>

したがって、上記で基本的に達成しようとしているのは、以前のようにiframeを使用せずに、jQueryの.load()関数を使用する手段です。

これで、メインページのメニューから離れてクリックしてもすべて正常に機能しますが、メニュー項目の1つがフォームのあるページに移動し、ユーザーが現在デフォルトの「20ページにリダイレクト」を使用している「作成」ボタンを押すとボタンがクリックされたときのアクション。メインマスターページの範囲内にいないため、維持したいすべての機能が失われます。

そのため、これにより、上部の固定バナーとメニューにアクセスする手段が失われました。

基本的に、Oracle ApExアプリのページ間のリダイレクトやその他の分岐がすべて、私を介して<div id="main-content">、常にjQuery$("#main-content").load(actualPageURL)関数を使用してフィルタリング/処理されるようにする必要があります。

繰り返しになりますが、OracleApExアプリ内のすべてのページがメインコンテンツdivを通過することを確認する必要があります。

4

1 に答える 1

1

私はあなたが2つのことを捕らえる必要があると思います:標準のリダイレクトは「javascript:redirect()」としてhtmlに出されます。このリダイレクト関数はapex_4_1.jsで定義されており、単純にオーバーライドします。

function redirect(where){
   alert("im overriding the original redirect! It would've brought me to "+where);
};

枝はもっと迷惑です。私が今考えることができる最善の方法は、ページがapexボタンを介して送信されたときに発生するapexイベント「apexbeforepagesubmit」を使用することです。これに対して動的アクションを定義できます。これはフレームワークイベントの下にあります。または、イベントを自分でバインドすることもできます。

$(document).bind("apexbeforepagesubmit", function(event, pRequest){
   alert("before submit:"+pRequest);
});

リダイレクトURLが利用できないため、ここで解析を行う必要があることは明らかです(サーバー側のリダイレクトであるため、取得できないと思います)。私が考えることができるいくつかの標準的なボタンは、レコードナビゲーションのものです(前、次)。ただし、変更を適用します。これは、同じページへの処理後の分岐を実行し、成功メッセージを表示します。Target Typeたぶん、からPage in this Applicationに変更してみることができますURLか?たとえば、javascript関数を呼び出すことができます。または、ページ1にリダイレクトしたいですか?

なぜこのセットアップ全体なのか?固定バーとメニューが必要な場合は、カスタムページテンプレートといくつかのcss magixを用意してみませんか?不要のようです。

コメントを拡張する:

非常に小さなサンプルを設定しました-> http://apex.oracle.com/pls/apex/f?p=26186:1 アプリケーションはテーマ24に基づいています。新しいテーマは私の意見でははるかに優れていますレイアウトのためのテーブルの使用が減ったおかげです。私がしたのは:

  • 共有コンポーネント>テンプレート:サイドバーのない標準の1レベルタブページのコピーを取りました。次に、HTMLヘッダーと本文にある領域位置3と4の周りにIDを持ついくつかのdivを配置します。また、フッターにJavaScriptを含めました(もちろん、JavaScriptを別のファイルに入れて含めることもできます)
  • 共有コンポーネント>CSSファイル:divにスタイルを提供するためにcssファイルをアップロードしました
  • ページ0:ここでは、位置3と4に2つの領域を作成し、ログインページに表示されないように条件を設定しました。0ページのリージョンは、デフォルトでそのアプリケーションの各ページに表示されます。
  • ページ1:ページテンプレートの場合、もちろんカスタムテンプレートを選択しました。これ以上の編集は必要ありません。私のテンプレートがすべての作業を処理します。そのため、左側の派手でスタイリッシュなフローティングメニューとトップバーはすべて標準装備されています。それは大雑把ですべてですが、必要なのは、簡単な編集、css、およびJavaScriptのピンチだけでした。あなたはそれに慣れているはずです。

これで、作成する各ページが同じように表示されます。もちろん、ページ1から別のページへの分岐はリダイレクトを行いますが、ページ0の領域は各ページに表示されるため、とにかくすべて同じように見えます=>テンプレート化されています。これはあなたが望むものとはるかに一致しているようであり、ajaxルート全体よりもはるかに少ない作業です。

これを作成するために私がしたことは簡単です。最初にテンプレートを編集し(既存のテンプレートを簡単にコピーした後)、divに2つの領域位置を配置し、divにIDを指定しました。次に、ページを作成し、それに新しいテンプレートを割り当てました。ポジションごとに2つのリージョンを作成しました。それから私はいじくり回し始め、必要ないくつかのdivと要素を作成しました。ページヘッダーにスタイルタグを追加し、そこにもjsを配置しました。作業を進めながら、必要なもの(いくつかのdiv、クラスなど)を含めるようにテンプレートを編集しました。最後に、cssをファイルに移動し、テンプレートに含めました。jsについても同じです。リージョンをページ0にコピーし、ページ1から削除しました。テンプレートが完成しました。気軽に見て、新しいページを作成してください。もちろん、これはほんの小さなデモです。スタイルのために私を撃たないでください;-)

  • Apex.oracle.com->ログイン
  • ワークスペース:tompetrusbe
  • クレデンシャル:apex_demo / demo
  • アプリケーション:26186。固定メニューとトップバー
于 2012-03-05T09:15:17.667 に答える