`
cd0281
  • 浏览: 123143 次
  • 性别: 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
分享到:
评论

相关推荐

    js创建数据共享接口——简化框架之间相互传值

    标题提到的“js创建数据共享接口——简化框架之间相互传值”正是为了解决这一问题。传统的做法,如示例代码所示,可能涉及到通过`window.parent`或`document.getElementById`等方法逐层查找并传递数据,这不仅繁琐,...

    后台与页面之间的传值以及页面与页面之间的传值

    在IT行业中,尤其是在Web开发领域,后台与页面之间的传值以及页面与页面之间的传值是至关重要的技术环节。本文将详细讲解这两种通信方式,并以Spring MVC框架为例进行深入阐述。 一、后台(服务器)与页面(客户端...

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

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

    论医疗数据权利配置——医疗数据开放利用法律框架.pdf

    《论医疗数据权利配置——医疗数据开放利用法律框架》这篇专论主要探讨了在大数据时代背景下,医疗数据的权属分配、数据开放和利用的法律框架。医疗数据因其涉及患者个人隐私、医疗机构运营以及社会公共利益,其权利...

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

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

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

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

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

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

    页面之间的传值练习

    8. 使用自定义控件或用户控件:创建自定义控件可以封装数据,使得数据在控件实例之间传递。这种方法适用于复杂的数据结构或需要多次使用的组件。 在“页面传值联系.sln”项目中,可能包含了各种页面传值技术的示例...

    (Activity与Fragment之间进行传值

    在Android应用开发中,Activity和Fragment是两个核心组件,它们之间的数据传递对于构建复杂的用户界面至关重要。本篇文章将深入探讨如何在Activity与Fragment之间进行有效的数据传递。 首先,理解Activity和...

    C#窗口间互相传值通过第三者传值.7z

    6. **总结**:通过这个例子,我们可以看到,C#的委托不仅简化了窗口间的数据通信,还使得线程间的数据传递变得安全且易于管理。这种方法避免了直接的依赖关系,提高了代码的可维护性和灵活性。开发者可以根据实际...

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

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

    致礼2022_成熟的数据合规年——监管动态总结与趋势预判.pdf

    这一年,《数据安全法》和《个人信息保护法》两部关键法律颁布,与《网络安全法》一起构成了中国数据合规的基础法律框架。这三部法律为企业在数据处理、安全和用户隐私保护上设定了基本准则和监管要求。 监管机构在...

    两个Form之间传值Demo

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

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

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

    弹出窗口互相传值范例

    在这个"弹出窗口互相传值范例"中,我们将会探讨如何在不同的弹出窗口之间传递数据,这在Web开发中是一个重要的技能。 首先,我们看到的文件名如`MikeCat_pcwin.aspx`、`cwin_modal.aspx`、`cwin.aspx`等,这些都是...

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

    #资源达人分享计划#

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

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

    两个页面之间的传值方法

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

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

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

Global site tag (gtag.js) - Google Analytics