2015年3月25日星期三

使用js callback机制实现调用页面局部刷新

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
使用js callback机制实现调用页面局部刷新  阅读原文»

需求描述:审批表单页面由我的待办工作中打开,办理完毕后希望关闭该页面并且实现我待办表格的实时刷新;同时该需求也同样适用于从某些工作流管理模块中需要发起审批的情况,比如招聘需求模块中发起录用流程;我的绩效管理中审批绩效等。

我们先来看看之前的实现,该逻辑实现的功能是,从我待办列表中发起审批,审批结束后直接在当前页面,也就是审批页面跳转至一个新的oa主页面,并且打开我的工作-我待办的页签,实现方法如下:

$("#but_back").bind("click",function(){
window.top.opener=null;
varurl=window.location.href;
varisoa=url.indexOf('phicomm.com');
//varisoatest=url.indexOf('oatest.phicomm.com');
varcurWwwPath=window.document.location.href;
varpathName=window.document.location.pathname;
varpos=curWwwPath.indexOf(pathName);
varlocalhostPaht=curWwwPath.substring(0,pos);
varprojectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1);
window.top.open(localhostPaht+'/main/index.action?tableName=mywork','_self');
window.top.open(localhostPaht+projectName+'/main/index.action?tableName=mywork','_self');

  桌面js的处理逻辑:

$(document).ready(function($){
initModules(initMenus());
initIcoRemove();
initAppManager();
//解析当前URL判断是否需要跳转制定Table
functiongotoTable(){
vartableName=request("tableName");
if(""!=tableName&&null!=tableName&&'undefined'!=tableName){
openUrl($("#desktop_content_icon_"+tableName));

  以上方法虽然实现了办理结束后跳至我的待办的功能,但有以下缺陷:

  1. 跳转是在新页面中,并非在调用页面,这样就形成了调用和跳转页面两个相同的桌面;

  2. 新的页面并非与原调用页面完全一致,调用页面如打开多个页签,新打开的页面相当于将除我的待办外的其他页签关闭,并不符合用户的需求;

  3. 用户体验不友好

  我们使用jscallback的实现如下,当前页面的调用页面非空且未关闭时,我们就直接调用页面中的js方法实现其局部的刷新。

/**刷新父窗口关闭弹出窗口*/
functionrefreshAndClose(){
varjscallback=$.trim($("#jscallback").val());
vartype=$.trim($("#type").val());
if(window.opener&&!window.opener.closed&&jscallback!=null&&jscallback!=""){
//本页面的调用页面执行其嵌入或调用的js方法
eval("window.opener."+jscallback+"();");
window.close();//当前页面关闭
window.top.opener=null;
varurl=window.location.href;
varisoa=url.indexOf('phicomm.com');
varcurWwwPath=window.document.location.href;
varpathName=window.document.location.pathname;
varpos=curWwwPath.indexOf(pathName);
varlocalhostPaht=curWwwPath.substring(0,pos);
varprojectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1);
window.top.open(localhostPaht+'/main/index.action?tableName=mywork','_self');
window.top.open(localhostPaht+projectName+'/main/index.action?tableName=mywork','_self');

  调用页面js:grid即为需要局部刷新的表格。

阅读更多内容

没有评论:

发表评论

声明

转载有价值的IT博客,版权属原作者所有

标签

博客归档