jQuery Load Issue和Oracle ApEx v4.1

问题描述 投票:1回答:1

我希望使用jQuery .load(oracle apex url)查询。我有一个主页面,我已设置固定横幅,导航菜单显示/隐藏菜单。

在这个主页面模板中,我还有一些jQuery代码可以在选择菜单项时触发,它基本上加载到此Oracle ApEx应用程序中任何页面下面描述的“main-content”div中,即:

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

在这个主页面中,我还创建了一个“内容”区域,并使用以下HTML设置:

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

因此,基于上述内容,我基本上试图实现的是不再像以前那样使用iframe的方法,而是使用jQuery的.load()函数。

如果我点击主页面的菜单,但是当其中一个菜单项转到具有表单的页面并且用户按下“创建”按钮时,一切正常,当前使用默认的“重定向到第20页”单击按钮时的操作,我不再在主母版页的范围内,因此丢失了我想要维护的所有功能。

因此,我现在已经丢失了顶部的固定横幅以及访问我的菜单的方法。

我基本上需要确保我的Oracle ApEx应用程序中的页面之间的任何重定向或任何其他分支都通过我的<div id="main-content">进行过滤/处理,并始终使用jQuery $("#main-content").load(actualPageURL)函数。

同样,我需要确保我的Oracle ApEx应用程序中的每个页面都通过main-content div传递。

javascript jquery oracle-apex jquery-load
1个回答
1
投票

我认为你需要抓住两件事:标准的重定向在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将不可用(并且我认为你不能得到它,因为它是服务器端重定向)。我能想到的一些标准按钮是记录导航按钮(上一个,下一个)。但是还有Apply Changes,它使用成功消息对同一页面进行后处理分支。也许你可以尝试将Target TypePage in this Application改为URL?例如,您可以调用javascript函数。或者你想要重定向到第1页?

为什么这整个设置呢?如果你想要一个固定的栏和一个菜单,为什么不有一个自定义页面模板和一些CSS magix?这似乎没必要。

扩展评论:

我已经设置了一个非常小的样本 - > http://apex.oracle.com/pls/apex/f?p=26186:1该应用程序基于主题24.由于减少了表格的布局,我认为新的主题要好得多。我所做的只是:

  • 共享组件>模板:我获取了没有侧边栏的标准单级标签页的副本。然后我在区域位置3和4周围放置一些带有ID的div,它们位于html标题和正文中。还包括页脚中的一些javascript(你当然可以将你的javascript放在一个单独的文件中并包含它)
  • 共享组件> CSS文件:我上传了一个css文件,为我的div提供了一些样式
  • 第0页:这里我在位置3和4创建了2个区域,并将其条件设置为不在登录页面上显示。默认情况下,页面0上的区域显示在该应用程序的每个页面中。
  • 第1页:对于页面模板我当然选择了我的自定义模板。不需要进一步编辑,我的模板负责所有工作。因此,左侧和顶部酒吧的华丽漂亮的浮动菜单都是标准配置。这是粗暴的,但所有这一切,只需要一些simle编辑,css和一小撮javascript:你应该对此感到满意。

现在我将创建的每个页面都采用相同的外观。从第1页到另一个页面的分支当然会进行重定向,但由于第0页中的区域显示在每个页面上,它们看起来都是相同的=>模板化。这似乎更符合你的想法,而且比整个ajax路线要少得多。

我创建这个的方法很简单:首先我编辑了我的模板(在复制现有模板之后),并在div中放置两个区域位置,并给div一个id。然后我创建了一个页面,并为其分配了我的新模板。我为每个职位创建了两个区域。然后我开始捣乱,创造了一些我需要的div和元素。我在页眉中添加了样式标签,并将js放在那里。随着我的进展,我编辑了我的模板以包含必要的内容(一些div,一个类,......)。最后,我将css移动到一个文件,并将其包含在模板中。同样的js。我将区域复制到第0页并从第1页删除它们。模板已完成。随意看看它,创建一个新的页面等等。当然,这只是一个小型的演示。不要拍我的风格;-)

  • Apex.oracle.com - >登录
  • 工作区:tompetrusbe
  • 凭据:apex_demo / demo
  • 应用:26186。固定菜单和顶栏
© www.soinside.com 2019 - 2024. All rights reserved.