很多框架存在父子关系,操作起来十分麻烦,很多同学经常出现这样悲催的代码:
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创建数据共享接口——简化框架之间相互传值”正是为了解决这一问题。传统的做法,如示例代码所示,可能涉及到通过`window.parent`或`document.getElementById`等方法逐层查找并传递数据,这不仅繁琐,...
在IT行业中,尤其是在Web开发领域,后台与页面之间的传值以及页面与页面之间的传值是至关重要的技术环节。本文将详细讲解这两种通信方式,并以Spring MVC框架为例进行深入阐述。 一、后台(服务器)与页面(客户端...
本部分规定了共享服务接口的总体框架,包括共享服务接口注册、发布、撤销、变更等过程,以确保国家政务服务平台数据交换与共享接口的安全、可靠和高效。 五、共享服务接口注册 本部分规定了共享服务接口注册的总体...
c# WinForm 窗体之间传值的几种方式小结 在WinForm开发中,窗体之间传值是一种常见的需求。今天,我们将介绍WinForm 窗体之间传值的几种方式,帮助开发者更好地解决这个问题。 方式一:使用公共静态变量传值 在这...
8. 使用自定义控件或用户控件:创建自定义控件可以封装数据,使得数据在控件实例之间传递。这种方法适用于复杂的数据结构或需要多次使用的组件。 在“页面传值联系.sln”项目中,可能包含了各种页面传值技术的示例...
在Android应用开发中,Activity和Fragment是两个核心组件,它们之间的数据传递对于构建复杂的用户界面至关重要。本篇文章将深入探讨如何在Activity与Fragment之间进行有效的数据传递。 首先,理解Activity和...
6. **总结**:通过这个例子,我们可以看到,C#的委托不仅简化了窗口间的数据通信,还使得线程间的数据传递变得安全且易于管理。这种方法避免了直接的依赖关系,提高了代码的可维护性和灵活性。开发者可以根据实际...
这一年,《数据安全法》和《个人信息保护法》两部关键法律颁布,与《网络安全法》一起构成了中国数据合规的基础法律框架。这三部法律为企业在数据处理、安全和用户隐私保护上设定了基本准则和监管要求。 监管机构在...
"数据分析实战——共享单车" 数据分析实战是指通过对共享单车数据的分析,了解用户租车行为的模式和规律,以期能更好地服务于用户。整个数据分析过程可以分为五大步骤:需求分析、数据获取、数据处理、数据分析和...
本文将深入探讨"两个Form之间传值Demo"这一主题,讲解如何在C#中实现在不同窗体之间传递数据。 首先,让我们理解窗体间的值传递主要有以下几种方法: 1. **构造函数传递**: 当打开一个新窗体时,可以通过传递...
这篇博客"EXTJS 不同页面之间的传值问题(数据不经过后台,通过页面取得)"探讨的就是如何在EXTJS应用的不同视图间传递数据,而无需通过后端接口。 首先,我们可以使用EXTJS的全局变量来实现简单的数据共享。全局...
在这个"弹出窗口互相传值范例"中,我们将会探讨如何在不同的弹出窗口之间传递数据,这在Web开发中是一个重要的技能。 首先,我们看到的文件名如`MikeCat_pcwin.aspx`、`cwin_modal.aspx`、`cwin.aspx`等,这些都是...
#资源达人分享计划#
2. **全局变量**:虽然不推荐,但可以通过定义全局变量在不同窗口之间共享数据。这种方法简单但不安全,因为全局变量可能在不预期的情况下被修改。 3. **类属性**:如果多个窗口继承自同一基类,可以将数据存储为类...
在Web开发过程中,页面间的传值是实现前后端交互、数据共享的重要手段之一。本文将详细介绍两个页面之间的传值方法,包括常见的几种传值方式及其应用场景,并通过具体示例进行说明,帮助读者更好地理解和掌握这一...
标题“医疗数据共享的机遇与挑战——以欧盟健康数据合作模型为例”揭示了这一主题的核心,即探讨在全球范围内,尤其是在欧盟,如何通过共享医疗数据来促进医疗保健的进步,同时解决其中遇到的困难和问题。...
这两种方式都可以在同源策略下,为不同页面提供共享数据的能力。例如: ```javascript // 在父页面设置 localStorage.setItem('key', 'value'); // 在子页面获取 var value = localStorage.getItem('key'); ``...
《ISO IEC 8183-2023 信息技术——人工智能——数据生命周期框架》是国际标准化组织(ISO)和国际电工委员会(IEC)共同制定的一项标准,旨在为人工智能(AI)领域提供一个全面的数据管理框架。该标准详细阐述了如何...
MBA联考共享笔记——重点词汇.doc
在.NET框架中,开发Web应用程序时,我们经常需要在不同页面之间传递数据。这涉及到页面间的通信机制,以便用户在浏览网站时能够保持上下文。本文将深入探讨.NET页面之间如何进行有效且安全的数据传递。 一、URL参数...