Проблема с загрузкой jQuery и Oracle ApEx v4.1 - PullRequest
1 голос
/ 05 марта 2012

Я хочу использовать запрос jQuery .load (oracle apex url). У меня есть главная страница, на которой я установил фиксированный баннер с меню навигации, чтобы показать / скрыть меню.

В этом шаблоне главной страницы у меня также есть некоторый код jQuery, который запускается при выборе элемента меню, который в основном загружается в div «main-content», описанный ниже на любой странице в этом приложении Oracle ApEx, т.е.

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

На этой главной странице у меня также есть область «Содержимое», которую я создал, со следующими настройками HTML:

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

Итак, с учетом вышесказанного я в основном пытаюсь добиться того, чтобы больше не использовать iframe, как я это делал ранее, а использовать функцию .load () jQuery.

Теперь все работает нормально, если я щелкаю в далеко от меню главной страницы, но когда один из пунктов меню переходит на страницу, которая имеет форму, и пользователь нажимает кнопку «Создать», которая в настоящее время использует по умолчанию «Перенаправление на страница 20 ”Действие при нажатии кнопки, я больше не нахожусь в границах моей главной главной страницы и поэтому теряю все функции, которые мне хотелось бы сохранить.

Итак, теперь я потерял свой фиксированный баннер в верхней части, а также средства доступа к своему меню.

Мне нужно убедиться, что все перенаправления или любые другие переходы между страницами в моем приложении Oracle ApEx фильтруются / обрабатываются с помощью моего <div id="main-content"> и всегда с использованием функции jQuery $("#main-content").load(actualPageURL).

Опять же, мне нужно как-то убедиться, что каждая страница в моем приложении Oracle ApEx проходит через div основного контента.

1 Ответ

1 голос
/ 05 марта 2012

Я думаю, вам нужно поймать 2 вещи: стандартные перенаправления выводятся в html как 'javascript: redirect ()'.Эта функция перенаправления определена в apex_4_1.js, просто переопределите ее:

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

Ветви более раздражают.Лучшее, о чем я могу подумать сейчас, это использовать событие apex «apexbeforepagesubmit», которое запускается, когда страница передается через кнопки апекса.Вы можете определить динамическое действие для этого, оно может быть найдено в рамках событий фреймворка, или связать событие самостоятельно:

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

Очевидно, вам нужно будет выполнить какой-то синтаксический анализ здесь, так как URL перенаправления не будетдоступны (и я не думаю, что вы сможете получить его, так как это перенаправление на стороне сервера).Некоторые стандартные кнопки, о которых я могу думать, были бы навигационными кнопками записи (предыдущая, следующая).Но также и Применить изменения, которые делают ветку после обработки на той же странице, с сообщением об успешном завершении.Может быть, вы можете попробовать изменить Target Type с Page in this Application на URL?Вы могли бы, например, вызвать функцию JavaScript, затем.Или, может быть, вы хотите перенаправить на страницу 1?

Почему вся эта установка?Если вы хотите иметь фиксированную панель и меню, почему бы не иметь пользовательский шаблон страницы и немного CSS CSS?Это кажется ненужным.

Расширяя комментарии:

Я установил очень маленький образец -> http://apex.oracle.com/pls/apex/f?p=26186:1 Приложение основано на теме24. Новые темы намного лучше, на мой взгляд, благодаря ограниченному использованию таблиц для разметки.Все, что я сделал, было:

  • Общие компоненты> Шаблоны: я взял копию стандартной страницы с одноуровневыми вкладками без боковых панелей.Затем я поместил некоторые div с идентификатором вокруг позиций 3 и 4 региона, которые находятся в заголовке html и в теле.Также включены некоторые javascript в нижний колонтитул (вы, конечно, можете поместить свой javascript в отдельный файл и включить его)
  • Shared Components> CSS-файл: я загрузил css-файл, чтобы обеспечить некоторые стили для моих divs
  • Страница 0: здесь я создал 2 региона в позициях 3 и 4 и установил их состояние, чтобы они не отображались на странице входа.Области на странице 0 по умолчанию отображаются на каждой странице для этого приложения.
  • Страница 1: для шаблона страницы я, конечно, выбрал свой пользовательский шаблон.Дальнейшее редактирование не требуется, мой шаблон берет на себя всю работу.Таким образом, роскошное плавающее меню слева и верхняя панель поставляются в стандартном исполнении.Это грубо и все, но все, что нужно, это простое редактирование, CSS и щепотка JavaScript: вам должно быть удобно.

Теперь каждая страница, которую я создам, будет выглядеть одинаково.Ветвь от страницы 1 к другой странице, конечно, будет выполнять перенаправление, но поскольку области на странице 0 отображаются на каждой странице, они все равно будут выглядеть одинаково => шаблонно.Кажется, это намного больше соответствует тому, что вы хотите, и гораздо меньше работы, чем весь маршрут AJAX.

То, что я сделал, чтобы создать это очень просто: сначала я отредактировал свой шаблон (после копирования существующегоодин для удобства) и поместил две позиции региона в div, и дал div идентификаторы.Затем я создал страницу и назначил ей свой новый шаблон.Я создал две области для каждой позиции.Затем я начал дурачиться, создавая дополнительные элементы и элементы, которые мне нужны.Я добавил теги стиля в заголовок страницы и поместил туда js.По мере того, как я шел, я редактировал свой шаблон, чтобы включить в него то, что было необходимо (некоторые div, класс, ...).Наконец я переместил CSS в файл и включил его в шаблон.То же самое для JS.Я скопировал регионы на нулевую страницу и удалил их со страницы 1. Шаблон готов.Не стесняйтесь взглянуть на это, создать новую страницу и т. Д. Это, конечно, небольшая демонстрация.Не стреляйте в меня за стиль; -)

  • Apex.oracle.com -> логин
  • рабочее пространство: tompetrusbe
  • учетные данные: apex_demo / demo
  • приложение: 26186. Исправлено меню и верхняя панель
...