window.name应用于浏览器端数据存储
本代码简单地分享利用window.name实现浏览器端数据存储:
1、在同一个页面一个地方设置window.name = "abc",另外一个地方读取window.name,自然能得到"abc",这个很简单就不举例了
2、利用window.name实现页面跨域交互:demo.html是主页面,proxy.html是一个空的HTML文件(由于OSC不允许不输入任何代码,所以这里加了个空script),这两个文件都在同一个域下;remote.html是另外某个域下的文件
代码中有这么两处设置:
frame.contentWindow.location = self.cfg.proxyUrl;
和
frame.src=url;
这里说明下:
第一处设置是为了设置当前页面地址栏显示的URL(这样浏览器历史记录中也存的是这个),它是一个站内URL
第二处设置是为了让iframe显示的文档来自远程页面
1.图片
2. [代码]demo.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>window.name实现跨域主页面</title>
</head>
<body>
<button id="getDataBt">获取数据</button>
<div id="result"></div>
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script>
$(function() {
dataRequest = {
_doc : document,
cfg: {
proxUrl: 'proxy.html' // proxy.html是一个空文件
}
};
dataRequest.send = function(url, callback) {
if(!url || typeof url !== "string") {
return;
}
var frame = this._doc.createElement("iframe"), state = 0, self = this;
this._doc.body.appendChild(frame);
frame.style.display = "none";
var clear = function() {
try {http://www.huiyi8.com/qzone/
frame.contentWindow.document.write('');
frame.contentWindow.close();
self._doc.body.removeChild(frame);
}QQ空间背景
catch(e) {
}
};
var getData = function() {
try {
var data = frame.contentWindow.name;
}
catch(e) {
}
clear();
if(callback && typeof callback === "function") {
callback(data);
}
};
$(frame).load(function() {
if(state === 1) {
getData();
}
else if(state === 0) {
state = 1;
frame.contentWindow.location = self.cfg.proxyUrl;
}
});
frame.src = url; // 设置frame的src属性为远程页面的URL
};
var testUrl = 'remote.html?' + new Date().getTime();
$("#getDataBt").click(
function() {
dataRequest.send(testUrl, function(result) {
$("#result").html(result);
});
}
);
});
</script>
</body>
</html>
3. [代码]proxy.html
<script type="text/javascript">
//
</script>
4. [代码]remote.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>远程页面</title>
</head>
<body>
<div id="content">
我是远程数据,来自remote.html!
</div>
</body>
<script type="text/javascript">
window.name = document.getElementById("content").innerHTML;
</script>
</html>
window.name应用于浏览器端数据存储的更多相关文章
- Web Storage:浏览器端数据储存机制
目录 概述 操作方法 存入/读取数据 清除数据 遍历操作 storage事件 参考链接 概述 这个API的作用是,使得网页可以在浏览器端储存数据.它分成两类:sessionStorage和localS ...
- 浏览器本地数据存储解决方案以及cookie的坑
本地数据存储解决方案以及cookie的坑 问题: cookie过长导致页面打开失败 背景: 在公司的项目中有一个需求是打开多个工单即在同一个页面中打开了多个tab(iframe),但是需要在刷新时只刷 ...
- JS中浏览器的数据存储机制
一.JS中的三种数据存储方式 cookie.sessionStorage.localStorage 二.cookie 1.cookie的定义: cookie是存储在浏览器上的一小段数据,用来记录某些当 ...
- JavaScript浏览器本地数据存储
浏览器本地存储主要使用的是sessionStorage和localStorage.两者都支持,sessionStorage保存的是浏览器和服务器的一次对话信息,只在一次回话中有效.当在新标签页或新窗口 ...
- 常见的浏览器端的存储技术:cookie
工作原理: cookie是存在用户硬盘中,用户每次访问站点时,Web应用程序都可以读取Cookie包含的信息.当用户再次访问这个站点时,浏览器就会在本地硬盘上查找与该 URL 相关联的 Cookie. ...
- 仿Redis用来作前端浏览器的数据存储结构
用js写了一个类似redis存储结构的类库,目前只有的存储类型只有hash.set两个, 还没测试过性能,欢迎各位猿友能够帮我指出程序代码的缺陷, 后期有时间会完善其他几个类型的存储结构. /**** ...
- HTML 5浏览器端数据库
HTML 5浏览器端数据库为什么要使用浏览器端数据库:随着浏览器处理能力的增强,越来越多的双喜鸟网站开始考虑在客户端存储大量的数据,这可以减少用户从服务器获取数据的等待时间. 1.本地存储-本地存储可 ...
- html5 浏览器端数据库
为什么使用浏览器端数据库:随着浏览器的处理能力不断增强,越来越多的网站开始考虑,将大量数据储存在客户端,这样可以减少用户等待从服务器获取数据的时间. 一.localStorage — 本地存储 可 ...
- 浏览器端-W3School-Browser:Window 对象
ylbtech-浏览器端-W3School-Browser:Window 对象 1.返回顶部 1. Window 对象 Window 对象 Window 对象表示浏览器中打开的窗口. 如果文档包含框架 ...
随机推荐
- angular中事件戳转日期的格式
本地化日期格式化: ({{ today | date:'medium' }})Nov 19, 2015 3:57:48 PM ({{ today | date:'short' }})11/19/15 ...
- Delphi+MySQL:TADOQuery使用插入中文乱码解决方法
Delphi+MySQL:TADOQuery使用插入中文乱码解决方法 with adoquery dobeginclose;sql.clear;sql.text:=' insert into test ...
- (5)Swing事件
import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; publi ...
- T1008 选数 codevs
http://codevs.cn/problem/1008/ 题目描述 Description 已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n).从 n 个整数中任选 k 个整 ...
- 单片机C51串口发送、接收寄存器
所以,发送和接收寄存器可使用同一地址,编写验证程序(发送和接收是独立空间):读取一个数(1)->发送一个数(2)->再读取得1则是独立空间 不知道STM32串口寄存器和C51串口寄存器是否 ...
- Crypto另外两段加密解密的代码
第一段代码风格-平铺直叙: import sys from Crypto.Cipher import AES from binascii import b2a_hex, a2b_hex class p ...
- linux svn配置hooks
先创建仓库: svnadmin create /data/svn/my.com 再配置权限: #cd /data/svn/my.com/conf/ #vim svnserve.conf 配置 [gen ...
- pycharm、idea插件代理设置,插件安装
pycharm和idea都是intellij的,所以插件安装是设置代理方法相似, 以pycharm举例: 1.已经安装的插件列表: 2.查找要安装的插件,没有,会给出下载插件的链接地址: 3.打开链接 ...
- C#-訪问轰炸机,新建进程,结束进程...(ConsoleApp)---ShinePans
这个程序能够自己主动打开要打开的网址,而且自己主动结束进程,这样能够达到博文点击流量的添加 program.cs using System; using System.Collections.Gene ...
- BUPT复试专题—比较奇偶数(2010)
https://www.nowcoder.com/practice/188472f474d5421cb8218b8ad561023b?tpId=67&tqId=29636&rp=0&a ...