多個jsp頁面共用一個js對象的超級方法

來源:互聯網
上載者:User

 今天,在項目中遇到一個問題,兩個js頁面要共用一個就js對象。js全域變數和靜態變數都不行,其他苦逼的小農們就不要去強求了。而LZ又不想用cookie來存放,一是不安全,二個人喜好。最後發現一種超級方法來解決這個困擾,那就是用window.top['_CACHE']來存放這個變數,即可實現,不同Jsp頁面直接的對象共用。

var share = { /** * 跨架構資料共用介面 * @param {String} 儲存的資料名 * @param {Any} 將要儲存的任意資料(無此項則返回被查詢的資料) */ data: function (name, value) { var top = window.top, cache = top['_CACHE'] || {}; top['_CACHE'] = cache; return value !== undefined ? cache[name] = value : cache[name]; }, /** * 資料共用刪除介面 * @param {String} 刪除的資料名 */ removeData: function (name) { var cache = window.top['_CACHE']; if (cache && cache[name]) delete cache[name]; } };


下面貼上LZ的代碼:

LZ的一個jsp頁面為A.jsp,在A.jsp中點擊一個按鈕開啟另一個B.jsp頁面。LZ的思路如下:

在A.jsp開啟B.jsp的事件中,寫入如下代碼:

window.top['_CACHE'] = chatFrdList; window.top['_CACHE'][frdUserId] = frdUserId;

其中,chatFrdList定義為var chatFrdList = new Object();

frdUserId為一個使用者的id。

那麼,在B.jsp的一個事件中,就可以執行下面的操作:

<pre name="code" class="javascript" style="margin-top:0px; margin-bottom:0px; padding:0px; font-family:'courier new'
,courier,monospace">var e = document.getElementsByName("chatWindow");</pre><pre name="code" class="javascript" style="margin-top:0px; margi
n-bottom:0px; padding:0px; font-family:'courier new',courier,monospace">var keyId = e[0].id; delete window.top['_CACHE'][keyId];// 關閉與該好友的聊天視窗時,將其從聊天表中移除</pre>


然後,LZ就可以在A.jsp的其他事件中操作window.top['_CACHE']了,這樣便能實現多個JSP頁面直接的js對象共用了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.