pageoffice6 版本在線打開文件彈出網頁對話框

用戶在使用PageOffice在線編輯文檔的操作過程中,如果遇到一些複雜的編輯需求,可能會需要彈出一個新的對話框,做相應的處理,可能是設置一些格式,就如同Office設置字體、段落等各種對話框,也可能是填充一些內容到文檔中,就如同插入書籤、藝術字等各種對話框,PageOffice針對此需求提供了彈出模態和非模態兩種網頁對話框的方法,分別是ShowHtmlModalDialog和ShowHtmlModelessDialog,模態和非模態對話框的唯一區別就是模態對話框彈出後,用戶就不能對父窗口做任何操作了,當然也就無法編輯文件,而非模態對話框就不會有這樣的限制,開發人員可以根據實際需求選擇使用。

在使用彈出網頁對話框功能時,必須解決網頁對話框與父窗口交互的幾個問題,包括:

  • 父窗口給彈出的網頁對話框傳遞參數
  • 網頁對話框調用父窗口函數
  • 網頁對話框給父窗口傳遞參數
  • 網頁對話框調用父窗口函數獲取返回值
  • 網頁對話框調用父窗口中的PageOffice

由於ShowHtmlModalDialog和ShowHtmlModelessDialog的參數和調用方法都是完全相同的,爲了簡單起見,本文就以ShowHtmlModelessDialog方法爲例,介紹一下彈出網頁對話框的使用方法。

  1. 父窗口給彈出的網頁對話框傳遞參數很簡單,只需要在執行ShowHtmlModelessDialog方法彈出對話框的時候給第二個參數傳遞一個字符串,在彈出的網頁對話框中使用window.external.UserParams就可以獲取到這個字符串參數值。

  2. 在網頁對話框中調用父窗口函數、給父窗口傳遞參數、獲取返回值等功能,可以使用網頁對話框提供的內置js函數CallParentJSFunc一起實現。

  3. 爲了便於開發人員實現網頁對話框與父窗口PageOffice的交互,PageOffice提供的網頁對話框中的 js 對象內置引用了父窗口中的pageofficectrl對象,所以在彈出的網頁對話框中直接 js 調用pageofficectrl對象就可以控制父窗口中的PageOffice和操作文檔。

前端代碼

  1. 父窗口的HTML代碼:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" >
<html>
<head>
<script type="text/javascript">
    var count = 0;
    // 給彈出的網頁對話框準備的調用函數
    function updateCount(value) {
        count = count + value;
        document.getElementById("Text1").value = count;
        return count.toString();
    }
    function ShowModelessDlg() {
      // 彈出網頁對話框,並通過第二個參數傳遞字符串數據:123456
      pageofficectrl.ShowHtmlModelessDialog("Modeless.html", "123456", "width=560px;height=410px;");
    }
    function OnPageOfficeCtrlInit() {
      pageofficectrl.AddCustomToolButton("彈出非模態窗口", "ShowModelessDlg()", 0);
    }
</script>
</head>
<body>
<div>
	js變量count=<input id="Text1" type="text" value="0"/>
</div>
<div style=" width:auto; height:95vh;">
    PageOffice組件代碼
</div>
</body>
</html>
  1. 彈出網頁對話框Modeless.html代碼:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>Modeless</title>
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <script type="text/javascript">
	// 1. 獲取ShowHtmlModelessDialog方法的第二個參數的字符串值:123456
	var paramStr = window.external.UserParams;

	function test(num){
		// 2. 調用父窗口的updateCount函數,並傳遞參數
		CallParentJSFunc({
			func: "updateCount("+num+")",
			success: function (strRet) {
				// 調用成功,獲取updateCount返回值
				document.getElementById('msg').innerText = "父窗口updateCount函數返回值 :"+strRet;
			}
		});
	}

	function test2(){
		// 3. 直接調用pageofficectrl對象,給Word當前光標位置添加字符串文本
		pageofficectrl.word.SetTextToSelection('--來自非模態對話框的文本--');
	}
  </script>
</head>
<body>
  <h3>這是一個非模態網頁對話框</h3>
  <p> 此窗口彈出之後,用戶仍然可以操作父窗口和編輯Word文件。</p>
  <p> 父窗口執行ShowHtmlModelessDialog時傳遞過來的參數:<span id="span1" ></span></p>
  <p> 點擊下面按鈕可以與父窗口進行交互操作。</p>
  <ul>
    <li>
      通過CallParentJSFunc調用父窗口js函數updateCount:<br />
      <input type="button" value="Count 加 1" onclick="test(1)" />
      <span id="msg" ></span>
    </li>
    <li>
      直接調用父窗口pageofficectrl對象:(<span style="color:red;">點擊後,注意word內容變化</span>)<br />
      <input type="button" value="插入文本到Word" onclick="test2()" />
    </li>
  </ul>	
  <script type="text/javascript">
    document.getElementById('span1').innerText = paramStr;
  </script>
</body>
</html>

參考鏈接:彈出網頁對話框

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章