摘要:進入報表頁面的入口不是固定的頁面,也不是固定的按鈕,因此不同種類的報表傳遞的參數不同,并且各組參數之間沒什么共同性。鑒于以上幾點,我利用父子頁面能夠互相訪問對方對象的特性,想了一個頁面間隱式傳遞參數的方式。
該文寫于 2012-08-10
在工作的開發過程中有個查看報表的需求——從某個頁面點擊按鈕打開報表頁面(該頁面為新建窗口)。進入報表頁面的入口不是固定的頁面,也不是固定的按鈕,因此不同種類的報表傳遞的參數不同,并且各組參數之間沒什么共同性。原本的實現方式是通過 URL 的 queryString 將參數傳遞到報表頁面,正如前面所說,不同種類的報表傳遞的參數不同,于是報表頁面就會出現以下一些問題:
URL 過長,看起來很不美觀;
需要對 queryString 進行解析與判斷來判別是什么類型的報表;
如果未來多加一些類型的報表的話,判斷也會隨之增多,這樣不僅代碼量增加,維護起來也有點困難,還影響性能;
安全性欠佳,通過 queryString 找到規律的話,通過瀏覽器地址欄隨便地輸入一個符合規律的 URL 就能獲得想要看的數據。
鑒于以上幾點,我利用父子頁面能夠互相訪問對方 window 對象的特性,想了一個“頁面間隱式傳遞參數”的方式。
父頁面(入口頁面) JavaScript 代碼javascriptwindow.windowPool = []; // 用于存儲子頁面的 window 對象及隱式傳遞的參數 var newWin = window.open( url ), // 新建窗口,url 為報表頁面地址 reportParams = {}; // 報表所需參數 window.windowPool.push({ "window": newWin, "parameter": reportParams });
看到上段代碼,也許會奇怪地問:“為什么要將子頁面的 window 對象和報表參數分開,而不是將報表參數綁定在子頁面的 window 對象上?”這是因為子頁面如果刷新了的話,報表參數就會失效了。將子頁面(報表頁面)的 window 對象與報表參數組合成一個 JSON 添加到數組里是為了避免當從父頁面(入口頁面)打開多個顯示不同種類報表的報表頁面時,早先打開的報表頁面刷新操作而引起的顯示后打開的報表頁面內容的問題。
子頁面(報表頁面) JavaScript 代碼javascriptvar params, index = 0; for( ; index < opener.windowPool.length; index++ ) { if ( opener.windowPool[index].window === window ) { params = opener.windowPool[index].parameter; break; } }
該方式在除了 IE6 之外的瀏覽器都能正常運行,IE6 沒測試過,不清楚兼容性如何。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/91514.html
摘要:,表明執行操作的字符串。,這個屬性可以指示系統如何啟動一個,以及啟動之后如何處理。是一個字符串,例如這里的的構造函數傳入了兩個參數,和組件名,調用了方法后,會在當前的應用中啟動這個服務。 1. 前言 ? ? ? ?在Android中有四大組件,這些組件中有三個組件與Intent相關,可見Intent在Android整個生態中的地位高度。Intent是信息的載體,用它可以去請求組件做相應...
摘要:瀏覽器總是運行位于作用域鏈頂部的當前執行上下文。作用域的前端永遠是當前執行代碼所在環境的變量對象而全局執行環境的變量對象始終是作用域鏈中的最后一個對象。調用棧為了達到當前執行位置所調用的所有函數。 ECMAScript中的變量值類型 基本類型 : Number, String, Boolean, Undefined, Null 引用類型 : Object, Array, Func...
摘要:總結方法自執行時,指向,被對象調用時,指向對象。可以用和改變指向。 總結: 方法自執行時,this指向window,被對象調用時,this指向對象。可以用call(),apply()和bind()改變this指向。 默認綁定 全局環境中this默認綁定到window console.log(this); //window ...
摘要:調用棧就是為了到達當前執行位置所調用的所有函數。由于無法控制回調函數的執行方式,因此就沒有辦法控制調用位置得到期望的綁定,下一節我們會介紹如何通過固定來修復這個問題。 在《你不知道的this》中我們排除了對于this的錯誤理解,并且明白了每個函數的this是在調用時綁定的,完全取決于函數的調用位置。在本節中我們主要介紹一下幾個主要內容: 什么是調用位置 綁定規則 this詞法 調用...
閱讀 1215·2023-04-26 00:47
閱讀 3568·2021-11-16 11:53
閱讀 795·2021-10-08 10:05
閱讀 2739·2021-09-22 15:19
閱讀 2981·2019-08-30 15:55
閱讀 2755·2019-08-29 16:55
閱讀 2921·2019-08-29 15:20
閱讀 1111·2019-08-23 16:13