`
cd0281
  • 浏览: 123043 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

创建数据共享接口——简化框架之间相互传值(转载)

 
阅读更多
很多框架存在父子关系,操作起来十分麻烦,很多同学经常出现这样悲催的代码:

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 !== undefined ? 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', 'http://www.planeart.cn');
share.data('editTitle', function (val) {
document.title = val;
});


然后某框架页面任意取A页面的数据

alert('我的博客地址是: ' + share.data('myblog');
var editTitle = share.data('editTitle');
editTitle('我已经获取到了数据');


对,就这么简单!你还可以在artDialog4.0.0 的iframeTools扩展中看到此技术身影。

http://www.planeart.cn/?p=1554#more-1554
分享到:
评论

相关推荐

    数据共享接口

    数据共享接口,通常指的是在两台计算机或设备之间建立的数据通信路径,旨在实现数据的无缝传输与共享。这种接口对于需要实时交换信息的系统至关重要,尤其是在工业自动化、网络监控、远程控制等领域。本文将基于提供...

    激活数据要素潜能——理论框架和现实问题.docx

    激活数据要素潜能——理论框架和现实问题 在数字经济时代,以大数据为代表的信息资源已经演进为生产要素,对经济增长、生产力变革和产业生产率提升产生深远影响。数据要素的激活对经济增长和生产力变革具有重要意义...

    接口关联方式 Fragment之间通过Activity相互传值和调用方法

    在Android应用开发中,Fragment是UI组件的重要组成部分,它允许我们构建可重用的模块化...参考链接提供的文章《Fragment之间通过Activity相互传值和调用方法》应该会有更详细的实践示例,建议查阅以获取更多实践细节。

    winform利用窗体属性实现窗体之间传值.rar

    标题“winform利用窗体属性实现窗体之间传值”所指的知识点,主要是关于如何通过设置和访问窗体的公共属性来实现在不同窗体间的数据传递。这种技术尤其适用于简单的值传递场景,下面我们将详细探讨这一方法。 首先...

    C0126.2国家政务服务平台数据交换与共享接口第2部分:共享接口要求.pdf

    本部分规定了共享服务接口的总体框架,包括共享服务接口注册、发布、撤销、变更等过程,以确保国家政务服务平台数据交换与共享接口的安全、可靠和高效。 五、共享服务接口注册 本部分规定了共享服务接口注册的总体...

    c# WinForm 窗体之间传值的几种方式(小结)

    c# WinForm 窗体之间传值的几种方式小结 在WinForm开发中,窗体之间传值是一种常见的需求。今天,我们将介绍WinForm 窗体之间传值的几种方式,帮助开发者更好地解决这个问题。 方式一:使用公共静态变量传值 在这...

    QT父子窗口相互传值

    "QT父子窗口相互传值"这个主题,主要涉及Qt框架中如何有效地实现这种通信机制。本篇文章将详细探讨Qt窗口之间传递数据的方法和技巧,对初学者来说尤其具有指导意义。 首先,让我们理解Qt中的窗口对象关系。在Qt中,...

    隐私保护视角下医疗数据共享意愿研究——基于三方演化博弈分析.pdf

    《隐私保护视角下医疗数据共享意愿研究——基于三方演化博弈分析》一文深入探讨了在“互联网+医疗健康”的背景下,如何平衡隐私保护与医疗数据共享的问题。文章由南京邮电大学管理学院的韩普副教授、硕士研究生顾亮...

    数据分析实战——共享单车.pdf

    "数据分析实战——共享单车" 数据分析实战是指通过对共享单车数据的分析,了解用户租车行为的模式和规律,以期能更好地服务于用户。整个数据分析过程可以分为五大步骤:需求分析、数据获取、数据处理、数据分析和...

    页面之间传值的几种方式.txt

    ### 页面之间传值的几种方式 在ASP.NET Web Forms中,页面之间的数据传递是一项非常重要的技术,它使得用户能够在不同的页面或控件间共享数据变得简单。本文将详细介绍几种常用的页面间传值方法:QueryString、...

    两个Form之间传值Demo

    本文将深入探讨"两个Form之间传值Demo"这一主题,讲解如何在C#中实现在不同窗体之间传递数据。 首先,让我们理解窗体间的值传递主要有以下几种方法: 1. **构造函数传递**: 当打开一个新窗体时,可以通过传递...

    EXTJS 不同页面之间的传值问题(数据不经过后台,通过页面取得)

    这篇博客"EXTJS 不同页面之间的传值问题(数据不经过后台,通过页面取得)"探讨的就是如何在EXTJS应用的不同视图间传递数据,而无需通过后端接口。 首先,我们可以使用EXTJS的全局变量来实现简单的数据共享。全局...

    基于区块链构建数据共享体系——以城市文明诚信积分体系为例.pdf

    #资源达人分享计划#

    pyqt5+qt 多窗体互相传值源程序

    2. **全局变量**:虽然不推荐,但可以通过定义全局变量在不同窗口之间共享数据。这种方法简单但不安全,因为全局变量可能在不预期的情况下被修改。 3. **类属性**:如果多个窗口继承自同一基类,可以将数据存储为类...

    两个页面之间的传值方法

    在Web开发过程中,页面间的传值是实现前后端交互、数据共享的重要手段之一。本文将详细介绍两个页面之间的传值方法,包括常见的几种传值方式及其应用场景,并通过具体示例进行说明,帮助读者更好地理解和掌握这一...

    医疗数据共享的机遇与挑战 ——以欧盟健康数据合作模型为例.rar

    标题“医疗数据共享的机遇与挑战——以欧盟健康数据合作模型为例”揭示了这一主题的核心,即探讨在全球范围内,尤其是在欧盟,如何通过共享医疗数据来促进医疗保健的进步,同时解决其中遇到的困难和问题。...

    ajax\HTML 页面与页面之间传值

    这两种方式都可以在同源策略下,为不同页面提供共享数据的能力。例如: ```javascript // 在父页面设置 localStorage.setItem('key', 'value'); // 在子页面获取 var value = localStorage.getItem('key'); ``...

    ISO IEC 8183-2023 信息技术——人工智能——数据生命周期框架.rar

    《ISO IEC 8183-2023 信息技术——人工智能——数据生命周期框架》是国际标准化组织(ISO)和国际电工委员会(IEC)共同制定的一项标准,旨在为人工智能(AI)领域提供一个全面的数据管理框架。该标准详细阐述了如何...

    MBA联考共享笔记——重点词汇.doc

    MBA联考共享笔记——重点词汇.doc

    总结JSP与servlet之间的传值

    本文将详细讲解JSP与Servlet之间如何进行数据传递,包括JSP向Servlet传值和Servlet向JSP传值的多种方法。 一、JSP向Servlet传值 1. Form表单传递: 当用户在JSP页面上填写表单并提交时,表单数据会被封装到...

Global site tag (gtag.js) - Google Analytics