Anforderungsbeschreibung: Die Seite mit dem Genehmigungsformular wird in meiner Aufgabenliste geöffnet. Nachdem die Verarbeitung abgeschlossen ist, hoffe ich, die Seite zu schließen und gleichzeitig eine Echtzeitaktualisierung meines Aufgabenformulars zu erreichen Die Anforderung gilt auch für bestimmte Workflow-Management-Module, in denen eine Genehmigung eingeleitet werden muss, z. B. die Einleitung des Rekrutierungsprozesses im Modul „Rekrutierungsanforderungen“ zur Genehmigung der Leistung in meinem Leistungsmanagement usw.
Schauen wir uns zunächst die vorherige Implementierung an. Die Funktion dieser Logikimplementierung besteht darin, die Genehmigung aus meiner To-Do-Liste einzuleiten direkt auf der aktuellen Seite sein, d. h. Die Genehmigungsseite springt zu einer neuen Hauptseite und öffnet die Registerkarte „Meine Arbeit – Meine Aufgaben“. Die Implementierungsmethode ist wie folgt:
$("#but_back").bind("click", function() { window.top.opener=null; var url = window.location.href; var isoa=url.indexOf('phicomm.com'); //var isoatest=url.indexOf('oatest.phicomm.com'); var curWwwPath=window.document.location.href; var pathName=window.document.location.pathname; var pos=curWwwPath.indexOf(pathName); var localhostPaht=curWwwPath.substring(0,pos); var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1); if(isoa>0){ window.top.open(localhostPaht+'/main/index.action?tableName=mywork','_self'); }else{ window.top.open(localhostPaht+projectName+'/main/index.action?tableName=mywork','_self'); } });
Desktop js Verarbeitungslogik:
$(document).ready(function($){ // 初始化图标 initModules(initMenus()); refixAppPos(); // 注册事件 regClick(); sortable(); initIcoRemove(); initAppManager(); //解析当前URL判断是否需要跳转制定Table gotoTable(); }); //跳转制定Table function gotoTable(){ var tableName = request("tableName"); if(""!=tableName&&null!=tableName&&'undefined'!=tableName){ openUrl($("#desktop_content_icon_"+tableName)); } }
Obwohl die obige Methode die Funktion des Springens zu meiner Aufgabe nach Abschluss der Verarbeitung realisiert, weist sie die folgenden Mängel auf:
Der Sprung erfolgt in einem neuen Zustand Seite, nicht auf der aufrufenden Seite, wodurch eine Aufruf- und Sprungseite zu zwei identischen Desktops entsteht.
Die neue Seite ist nicht genau dieselbe wie die ursprüngliche aufrufende Seite Die geöffnete Seite entspricht dem Hinzufügen anderer Seiten außer „Meine Aufgaben“. Das Schließen der Registerkarte entspricht nicht den Anforderungen des Benutzers;
Die Benutzererfahrung ist nicht freundlich
Wir verwenden js Callback, um es wie folgt zu implementieren . Wenn die aufrufende Seite der aktuellen Seite nicht leer ist und nicht geschlossen wurde, rufen wir direkt die js-Methode auf der Seite auf, um eine teilweise Aktualisierung zu erreichen.
/** 刷新父窗口关闭弹出窗口 */ function refreshAndClose(){ var jscallback = $.trim($("#jscallback").val()); var type = $.trim($("#type").val()); if (window.opener && !window.opener.closed && jscallback!=null && jscallback!="") { if(!type){ //本页面的调用页面执行其嵌入或调用的js方法 eval("window.opener."+jscallback+"();"); } window.close();//当前页面关闭 } else { window.top.opener=null; var url = window.location.href; var isoa=url.indexOf('phicomm.com'); var curWwwPath=window.document.location.href; var pathName=window.document.location.pathname; var pos=curWwwPath.indexOf(pathName); var localhostPaht=curWwwPath.substring(0,pos); var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1); if(isoa>0){ window.top.open(localhostPaht+'/main/index.action?tableName=mywork','_self'); }else{ window.top.open(localhostPaht+projectName+'/main/index.action?tableName=mywork','_self'); } } }
Rufen Sie die Seite js auf: Grid ist die Tabelle, die teilweise aktualisiert werden muss.
function openUrl(url){ url=url+"&jscallback=callsus" window.open(url,'_blank'); } function callsus(){ $('#performanceDataGrid').reload(); }
Es implementiert eine teilweise Aktualisierung der aufrufenden Seite durch einen JS-Rückruf und hat eine gewisse Orientierungs- und Referenzbedeutung für ähnliche Funktionen in anderen Anwendungen.
Weitere verwandte Artikel, die den js-Rückrufmechanismus verwenden, um eine teilweise Aktualisierung der aufrufenden Seite zu erreichen, finden Sie auf der chinesischen PHP-Website !