我希望使用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传递。
我认为你需要抓住两件事:标准的重定向在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 Type
从Page in this Application
改为URL
?例如,您可以调用javascript函数。或者你想要重定向到第1页?
为什么这整个设置呢?如果你想要一个固定的栏和一个菜单,为什么不有一个自定义页面模板和一些CSS magix?这似乎没必要。
扩展评论:
我已经设置了一个非常小的样本 - > http://apex.oracle.com/pls/apex/f?p=26186:1该应用程序基于主题24.由于减少了表格的布局,我认为新的主题要好得多。我所做的只是:
现在我将创建的每个页面都采用相同的外观。从第1页到另一个页面的分支当然会进行重定向,但由于第0页中的区域显示在每个页面上,它们看起来都是相同的=>模板化。这似乎更符合你的想法,而且比整个ajax路线要少得多。
我创建这个的方法很简单:首先我编辑了我的模板(在复制现有模板之后),并在div中放置两个区域位置,并给div一个id。然后我创建了一个页面,并为其分配了我的新模板。我为每个职位创建了两个区域。然后我开始捣乱,创造了一些我需要的div和元素。我在页眉中添加了样式标签,并将js放在那里。随着我的进展,我编辑了我的模板以包含必要的内容(一些div,一个类,......)。最后,我将css移动到一个文件,并将其包含在模板中。同样的js。我将区域复制到第0页并从第1页删除它们。模板已完成。随意看看它,创建一个新的页面等等。当然,这只是一个小型的演示。不要拍我的风格;-)