0

アプリケーションには、ナビゲーション バーにホーム アイテムがあります (アイテムはすべてのページにあります)。ホーム項目をクリックすると、ページ番号に基づいて、保存されていない作業がすべて失われることをユーザーに警告する警告ボックスが表示されるようにしたいと思います。ユーザーが [はい] を押すと、アプリケーションのホームページに移動し、何も保存されません。いいえを押すと、ページにとどまります。

現在、このダイアログ ボックスはすべてのページに表示されます。Oracle Application Expressではshared components > navigation bar > target area、これらは私の設定です:

ターゲット タイプ =url

URL ターゲット =

javascript:if(confirm('All unsaved work will be lost?')) 
{window.location.href ='f?p=&APP_ID.:1:&SESSION.:&APP_PAGE_ID.';}

この動作が選択した数のページでのみ発生することを望みます。ユーザーがこのリストに含まれていないページをクリックすると、警告ボックスは表示されず、ユーザーはアプリケーションのホームページに移動します。

4

1 に答える 1

1

What you'd want is a dynamic action which targets the navigation bar entries. However, there is simply no easy way to selectively enable or disable this action on select items save for testing the text of the anchor tag. That would mean you'd be hardcoding values in your dynamic action to test the links, which i will not recommend. There are no classes that can be assigned, and no onclick events.
You could use the code you posted, and have a javascript function which takes a page id as input parameter and then checks the page id against a list of pages which allow the action, but again complicated. It could be made dynamic with some ajax, but since you're unfamiliar with javascript it's better to first get accustomed with it before tackling that.
So, instead of inventing something like this, take a look at this save before exit plugin. It will check for unsaved changes, and you can add this just to the pages you want it on.

于 2012-09-03T07:50:37.823 に答える