1. 描述:最近項目有個在線編輯office 辦公文檔的功能, 採用的方案是用 pageoffice 在線編輯 office 文檔. 因爲高版本的谷歌和火狐不支持任何插件了.所以pageoffice 用pobrowser方法間接彈出一個ie瀏覽器來實現.彈出的頁面稱作子頁面. 原來的頁面稱作父頁面.
最近有個需求. 在線保存文檔之後,需要返回一個自定義值,並且把這個值傳到父頁面中. 回調父頁面中的js函數
2. 核心代碼
(1) 保存成功後設置自定義的返回值
(2)頁面獲取自定義的返回值
(3)關閉彈出窗口的js
(4)回調父頁面js函數的方法
3:具體的實現過程
父頁面 index.jsp
<script type="text/javascript" src="<%=request.getContextPath()%>/jquery.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/pageoffice.js" id="po_js_main"></script>
<script type="text/javascript">
function getValue(value){
alert(value);
document.getElementById('returnValue').value= value;
}
</script>
<body>
<input id="returnValue" value=""/>
<a href="javascript:POBrowser.openWindowModeless('Word.jsp','width=1200px;height=800px;');">打開文件</a>
</body>
文檔頁面
<%@ page language="java"
import="java.util.*,com.zhuozhengsoft.pageoffice.*,com.zhuozhengsoft.pageoffice.wordwriter.*"
pageEncoding="UTF-8"%>
<%@page import="java.awt.Color"%>
<%
PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
//設置服務器頁面
poCtrl.setServerPage(request.getContextPath() + "/poserver.zz");
//添加自定義按鈕
poCtrl.addCustomToolButton("保存", "Save", 1);
//設置保存頁面
poCtrl.setSaveFilePage("SaveFile.jsp");
//打開Word文檔
poCtrl.webOpen("test.doc", OpenModeType.docNormalEdit, "張佚名");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<body>
<script type="text/javascript">
function Save() {
//保存
document.getElementById("PageOfficeCtrl1").WebSave();
//返回值
document.getElementById("PageOfficeCtrl1").Alert("保存成功,返回值爲:" + document.getElementById("PageOfficeCtrl1").CustomSaveResult);
var value = document.getElementById("PageOfficeCtrl1").CustomSaveResult;
//調用父頁面
var sResult = window.external.CallParentFunc("getValue('"+value+"');");
if(sResult=='poerror:parentlost'){
alert('父頁面關閉或跳轉刷新了,導致父頁面函數沒有調用成功!');
}
//關閉窗口
window.external.close();
}
</script>
<div style="height: 850px; width: 1036px; overflow: hidden;">
<%=poCtrl.getHtmlCode("PageOfficeCtrl1")%>
</div>
</body>
</html>
保存頁面
<%@ page language="java" import="java.util.*,com.zhuozhengsoft.pageoffice.*" pageEncoding="utf-8"%>
<%
FileSaver fs=new FileSaver(request,response);
fs.saveToFile("d:\\aa.doc");
fs.setCustomSaveResult("ok");
fs.close();
%>
4:具體效果