jQuery Load Issue and Oracle ApEx v4.1



我希望使用jQuery .load(oracle apex url(查询。我有一个主页,我已将其设置为保存带有导航菜单的固定横幅以显示/隐藏菜单。

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

$("#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应用程序中的每个页面都通过主内容div。

我认为你需要抓住两件事:标准的重定向在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",当通过apex按钮提交页面时会触发。您可以对此定义动态操作,它可以在框架事件下找到,也可以自己绑定事件:

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

显然,您需要在此处进行一些解析,因为重定向 url 将不可用(而且我认为您无法获得它,因为它是服务器端重定向(。我能想到的一些标准按钮是记录导航按钮(上一个,下一个(。但也应用更改,它会将处理后的分支执行到同一页面,并显示成功消息。也许您可以尝试将Target TypePage in this Application更改为URL?例如,你可以调用一个javascript函数。或者,也许您想要重定向到第 1 页?

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

扩展评论:

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

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

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

创建这个所做的很简单:首先我编辑了我的模板(为了方便起见复制了一个现有的模板(并将两个区域位置放在一个div 中,并给div 一个 id。然后,我创建了一个页面,并为其分配了我的新模板。我为每个职位创建了两个区域。然后我开始四处乱窜,创建更多我需要的div和元素。我在页面标题中添加了样式标签,并将js也放在那里。随着我的前进,我编辑了我的模板以包含必要的内容(一些div,一个类,...(。最后,我将 css 移动到一个文件中,并将其包含在模板中。js 也是如此。我将区域复制到第 0 页,并从第 1 页中删除了它们。模板完成。随意查看它,创建新页面等。当然,这只是一个小演示。不要为了风格而射杀我;-(

  • Apex.oracle.com ->登录
  • 工作区:汤姆佩特鲁斯贝
  • 凭据:apex_demo/演示
  • 应用:26186。固定菜单和顶部栏

最新更新