国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

js創建數據共享接口――簡化框架之間相互傳值

2019-11-20 23:37:08
字體:
來源:轉載
供稿:網友
很多框架存在父子關系,操作起來十分麻煩,很多同學經常出現這樣悲催的代碼:
復制代碼 代碼如下:

window.parent.document.getElementById("main")
.contentWindow.document.getElementById('input').value =
document.getElementById('myIframe')
.contentWindow.document.getElementById('s0').value;

其實這個問題可以被大大的簡化,框架應用中有一個固定不變的窗口叫window.top,如果我們把數據緩存到這個頁面,其下所有框架都可以獲取到,無論子頁面如何變幻。不需要采用Cookie,也不需要采用什么HTML5本地數據庫策略,你只需要每個頁面引用一個js文件,內容如下:
復制代碼 代碼如下:

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

這個寥寥數行的方法可以共享任意類型的數據供各個框架頁面讀取,它與頁面名稱、層級毫無關系,就算哪天框架頁面層級被修改,你也完全不用擔心,它可正常工作。
例如,如我們可以在A頁面存入共享數據:
復制代碼 代碼如下:

share.data(‘myblog', ‘//m.survivalescaperooms.com');
share.data(‘editTitle', function (val) {
document.title = val;
});

然后某框架頁面任意取A頁面的數據
復制代碼 代碼如下:

alert(‘我的博客地址是: ‘ + share.data(‘myblog');
var editTitle = share.data(‘editTitle');
editTitle(‘我已經獲取到了數據');

對,就這么簡單!你還可以在artDialog 的iframeTools擴展中看到此技術身影。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 邵武市| 土默特左旗| 商都县| 南昌市| 新绛县| 新巴尔虎右旗| 福鼎市| 崇文区| 临泽县| 北流市| 宝坻区| 怀安县| 全南县| 聂拉木县| 大英县| 印江| 秦安县| 静海县| 淳化县| 吉木萨尔县| 桑日县| 扶绥县| 绍兴县| 潞西市| 鹤峰县| 鄂尔多斯市| 樟树市| 紫云| 静安区| 织金县| 红桥区| 萍乡市| 新沂市| 淮北市| 盈江县| 黄冈市| 新余市| 林芝县| 金溪县| 腾冲县| 建阳市|