window.top[_CACHE]实现多个jsp页面共享一个js对象
作者:whsnow 发布时间:2023-07-18 09:25:14
标签:js对象
今天,在项目中遇到一个问题,两个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; margin-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对象共享了。


猜你喜欢
- 如下所示:#先下载psutil库:pip install psutilimport psutilimport os,datetime,tim
- 过滤html代码的函数,当然也可以使用正则表达式。<%Function FilterHTML(strToFilter)&nb
- 1.什么是SQL注入 所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL
- 最近在开发过程中经常用到分页,今天挤出些时间来捋一捋自己的经验在web开发中,一般显示数据列表页时,我们会用到分页控件来显示数据。采用分页一
- 本文转自微信公众号:"算法与编程之美",一、问题描述在collections模块中的defauldict使用时与dict
- 从 github 下载https://github.com/acheong08/ChatGPT环境配置conda 创建虚拟环境我选择用 an
- 做电商时,消费者对商品的评论是很重要的,但是不会写代码怎么办?这里有个Chrome插件可以做到简单的数据爬取,一句代码都不用写。下面给大家展
- 在使用Dreamweaver制作主页的时候往往需要改变表格的高度。然而有时当我们拖动表格的边框,无论怎样拖动,等到放下鼠标,表格却又恢复到原
- VBScript似乎已经成为ASP服务器端开发的首先语言,VBScript函数库丰富、而且使用起来也很容易上手,即使平时不太编程的朋友,只要
- 一、操作步骤导入:import flask,json实例化:api = flask.Flask(name)定义接口访问路径及访问方式:@ap
- 我就废话不多说了,还是直接看代码吧!from IPython.display import display,Latex,Math%matpl
- 有些时候需要动态加载javascript事件的一些方法往往我们需要在 JS 中动态添加事件,这就涉及到浏览器兼容性问题了,以下谈及的几种方法
- 去空格及特殊符号s.strip().lstrip().rstrip(',')Python strip() 方法用于移除字符串
- 本文整理了Pytorch框架下模型的保存、复用、推理、再训练和迁移等实现。模型的保存与复用模型定义和参数打印# 定义模型结构class Le
- 源码: 代码如下: <% '隐藏并修改文件的最后修改时间的aspshell '原理:通过FSO可以修改文件的属性,比
- 这几天有一台MySQL数据库服务器出现了频繁的掉线情况,通过排查,并没有排查出哪个网站被攻击,百思不得其解中的时候,群里有个朋友说是因为微软
- FBV:function based view 基于函数的视图.CBV:class based view 基于类的视图.在视图函数创建类,需
- 1. 什么是虚拟环境?虚拟环境的意义,就如同 虚拟机 一样,它可以实现不同环境中Python依赖包相互独立,互不干扰。举个例子吧。假设我们的
- 我们写程序的目的就是使它在任何情况下都可以稳定工作。一个运行的很快但是结果错误的程序并没有任何用处。在程序开发和优化的过程中,我们必须考虑代
- 本文总结一下,拖拽所延伸出来的一些效果,供大家参考,具体内容如下1.实现拖拉图片时,带框的效果。即当鼠标拖动某一个图片或物体时,其原有位置扔