JS控制静态页面之间传递参数获取参数并应用
在项目中遇到这也一个问题:
有a.html和b.html。
1.a页面已经打开,b页面尚未打开,我希望在a页面设置好一些列参数,比如背景色,宽度等参数,传递给b页面,好让b页面在打开就能应用。
2.a页面已经打开,b页面无论是否打开。在a页面需要获取到b页面的一些元素甚至变量,以便于应用到a页面。
注意:不涉及跨域问题。
想了很久,终于想到了解决方案。
第一个问题,我们可以利用html页面锚点的特性,将参数通过url传递给b页面
这是a页面代码:
| 0 | <button>跳转设置</button> |
| 1 | <script> |
| 2 | var btn = document.querySelector('button'); |
| 3 | console.log(window); |
| 4 | |
| 5 | btn.addEventListener('click', function(){ |
| 6 | window.location = 'ci.html#bgc=#369?wd=500' |
| 7 | }) |
| 8 | </script> |
由代码可以知道,点击按钮跳转页面,跳转的url后面多了一系列参数,这个并不会影响跳转的地址,当b页面打开后,可以获取location截取字符串获得变量及变量值,再进行应用。
这是b页面代码:
| 0 | <div></div> |
| 1 | <script> |
| 2 | var div = document.querySelector('div'); |
| 3 | var bl = window.location.hash.slice(1).split('?'); |
| 4 | if(bl.length >= 1){ |
| 5 | for(var i = 0; i < bl.length; i += 1){ |
| 6 | switch (bl[i].split('=')[0]) { |
| 7 | case 'bgc': |
| 8 | document.body.style.background = bl[i].split('=')[1]; |
| 9 | break; |
| 10 | case 'wd': |
| 11 | div.style.width = bl[i].split('=')[1] + 'px'; |
| 12 | break; |
| 13 | default: |
| 14 | null; |
| 15 | break; |
| 16 | } |
| 17 | } |
| 18 | } |
| 19 | </script> |
通过截取字符串取得url传递过来的变量应用。成功!
第二个问题,我想的是通过iframe来达到目的,这只是一个障眼法。
在a页面动态创建一个iframe,并设置src值为b页面,display为none。再通过iframe的contentDocument属性获取返回的iframe的文档。
在文档内获取到所需要的元素并应用。
源码:
| 0 | <span>11111111111</span> |
| 1 | <script> |
| 2 | var fram = document.createElement('iframe'); |
| 3 | fram.src = 'http://www.vip.com/kongzhi/fram2.html'; |
| 4 | fram.style.display = 'none'; |
| 5 | document.body.appendChild(fram); |
| 6 | fram.onload = function(){ |
| 7 | var doc = fram.contentDocument || fram.contentWindow.document; |
| 8 | var p = doc.querySelector('p'); |
| 9 | document.body.appendChild(p); |
| 10 | } |
| 11 | </script> |
很轻松搞定,希望对各位看官有所帮助,欢迎你来和我探讨交流学习。
JS控制静态页面之间传递参数获取参数并应用的更多相关文章
- JS多个函数之间传递参数问题
JS多个函数之间传递参数的一个重要思想是在页面定义一个隐藏域,当第一个函数请求到数据时候修改隐藏域的值,第二个函数用jQuery的选择器选择页面中隐藏域的值. 比如: 页面中定义一个隐藏的页号. &l ...
- JSP页面之间传递参数的方法有哪些?
JSP页面之间传递参数的方法有哪些? 解答: 1)request 2)session 3)application 4)提交表单 5)超链接
- [Windows Phone学习笔记]页面之间传递对象
在Windows Phone中,页面之间传递参数就类似Web开发中一样,通过QueryString的形式进行传递,但是如果需要传递对象,则无法通过QueryString形式了,其实也可以,把对象序列化 ...
- ASP.NET页面之间传递值的几种方式(转载)
页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...
- spring boot 之如何在两个页面之间传递值(转)
原文地址:spring boot 之如何在两个页面之间传递值 问题:页面之间的跳转,通常带有值的传输,但是,在现在比较流行的SPRING MVC WEB 开发模型中,设计机制导致页面之间的直接接跳转和 ...
- ASP中页面之间传递值的几种方式
ASP.NET页面之间传递值的几种方式 页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryS ...
- 【js】【图片显示】js控制html页面显示图片方式
js控制html页面显示图片方式,只需要引入“jquery-1.11.2.min.js” js: /* 引用 <script src="jquery-1.11.2.min.js&quo ...
- js脚本捕获页面 GET 方式请求的参数?其实直接使用 window.location.search 获得
js脚本捕获页面 GET 方式请求的参数?其实直接使用 window.location.search 获得
- 使用session在jsp页面之间传递多维数组,用于实现全局变量的效果
使用session在jsp页面之间传递多维数组:发送数据的jsp页面:int [][] form_number=new int[4][4]; session.setAttribute("se ...
随机推荐
- K-th Number(第k大数)
K-th Number Time Limit: 20000MS Memory Limit: 65536K Total Submissions: 45710 Accepted: 15199 Ca ...
- 视频编解码学习之路(H264)
学习视频编解码技术很难吗?视频编解码技术的未来是什么? 明了的说,无论是软件还是硬件设计,视频编解码技术有很多难点,都需要很长一段时间积累才行. 从一开始接触MPEG-2到最新的H.264标准,可算走 ...
- 在一个apk中调用另外一个apk中的activity
今天忽然想到如果要在一个activity中调用另外一个activity该怎么办呢? 感觉这个应该比较简单,应为activity的启动方式就两种:显式启动.隐式启动: 显式启动的话肯定不行,那就只能使用 ...
- document_createElement
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- @property属性
1. 读写属性(readwrite/ readonly) 默认为readwrite,表示该属性既可以读取,也可以给该属性变量赋值:readonly则表示只能读取该属性变量. 2. 原子属性 (atom ...
- 图的广度优先/层次 遍历(BFS) c++ 队列实现
在之前的博文中,介绍了图的深度优先遍历,并分别进行了递归和非递归实现.BFS 无法递归实现,最广泛的实现是利用队列(queue).这与DFS的栈实现是极其相似的,甚至代码几乎都很少需要改动.从给定的起 ...
- Javascript 拖拽雏形中的一些问题——逐行分析代码,让你轻松了解拖拽的原理
今天我们就来解决上一次拖拽雏形中的一些问题.下面看看有哪些问题? 附上上期的Javascript代码,方便大家查看问题. <script type="text/javascript&q ...
- Drawable类及XMLDrawable的使用
一.性质 可直接使用.png..jpg..gif.9.png等图片作为资源,也可使用多种XML文件作为资源.(就是这些资源都能生成Drawable对象).并对XML文件作出相关处理 二.XMLDraw ...
- C99新特性
c99标准允许使用变长数组,变的意思是可以根据变量的值来指定数组的维数,如根据用户的输入值指定数组的大小,印象中以前是不可以的.现在在gcc中是可以的(PS:ansi c标准是C90标准): ==== ...
- node.js NPM 使用
n=NPM是一个Node包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准.有了NPM,可以很快的找到特定服务要使用的包,进行下载.安装以及管理已经安装的包.npms安装: 下载npm源 ...