程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> 多個jsp頁面共享一個js對象的超級方法

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

編輯:關於JSP

     今天,在項目中遇到一個問題,兩個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對象共享了。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved