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 ...
随机推荐
- c/c++性能优化--- cache优化的一点杂谈
之前写了一篇关于c/c++优化的一点建议,被各种拍砖和吐槽,有赞成的有反对的,还有中立的,网友对那篇博客的的评论和吐槽,我一个都没有删掉,包括一些具有攻击性的言论.笔者有幸阅读过IBM某个项目的框架代 ...
- The 5th tip of DB Query Analyzer
The 5th tip of DB Query Analyzer Ma Genfeng (Guangdong UnitollServices incorporated, G ...
- Linq 中的Select事例
---恢复内容开始--- 1.对查询结果进行转换. string[] names={"ADE","Jerry","Steves"}; var ...
- <!--转换office时需要此配置 --> <identity impersonate="true" />
1.需要对Office 进行操作时 ,添加权限 <!--转换office时需要此配置 --> <identity impersonate="true" /> ...
- L12 samba服务器搭建
在/data/share目录下建立三个子目录public.training.devel用途如下public目录用于存放公共数据,如公司的规章制度training目录用于存放公司的技术培训资料devel ...
- 动态获取UIWebView的真正高度
场景 在 App 中使用UIWebView加载网页, 与原生的 UI 显示在一起,一般情况下,webView 的 内容一页是肯定不够的,换句话说,webView 的高度是不定的,那如果原生的 UI是一 ...
- Excel转JSON-简单-暴力-迅速
一直在做一个关于网上选课的系统,选用了时下比较流行的node.js.今天在想怎么把学生或者老师的信息导入进去,涉及数量比较多一点,我手边又正好有一部分excel的表格.就想把excel转成json然后 ...
- 利用CSS3选择器定制checkbox和radio
之前在一个项目中需要定制checkbox,于是乎用图片模拟了一下,之后发现个更好用的方法(*因为兼容问题 在移动开发中用用就好) 效果: 1 2 3 4 5 6 7 实现代码: <style t ...
- android 快速创建一个新的线程
要给一个activity做成子线程的模式 第一种:直接创建子线程并启动 private Thread newThread; //声明一个子线程 new Thread() { @Override pub ...
- QJ系列笔记
1.求int型数据在内存中存储时1的个数输入一个int型数据,计算出该int型数据在内存中存储时1的个数. #include<stdio.h> void main() { ; int yu ...