JS控制静态页面之间传递参数获取参数并应用

本文介绍了在不涉及跨域的情况下,如何实现两个HTML页面之间的参数传递与元素获取。通过URL锚点特性传递参数给目标页面,并利用iframe内容文档属性获取源页面元素。

在项目中遇到这也一个问题:

有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>
2var btn = document.querySelector('button');
3console.log(window);
4 
5btn.addEventListener('click', function(){
6window.location = 'ci.html#bgc=#369?wd=500'
7})
8</script>

 

由代码可以知道,点击按钮跳转页面,跳转的url后面多了一系列参数,这个并不会影响跳转的地址,当b页面打开后,可以获取location截取字符串获得变量及变量值,再进行应用。

这是b页面代码:

 

0<div></div>
1<script>
2var div = document.querySelector('div');
3var bl = window.location.hash.slice(1).split('?');
4if(bl.length >= 1){
5for(var i = 0; i < bl.length; i += 1){
6switch (bl[i].split('=')[0]) {
7case 'bgc':
8document.body.style.background = bl[i].split('=')[1];
9break;
10case 'wd':
11div.style.width = bl[i].split('=')[1] + 'px';
12break;
13default:
14null;
15break;
16}
17}
18}
19</script>

 

通过截取字符串取得url传递过来的变量应用。成功!

第二个问题,我想的是通过iframe来达到目的,这只是一个障眼法。

在a页面动态创建一个iframe,并设置src值为b页面,display为none。再通过iframe的contentDocument属性获取返回的iframe的文档。

在文档内获取到所需要的元素并应用。

源码:

 

0<span>11111111111</span>
1<script>
2var fram = document.createElement('iframe');
3fram.src = 'http://www.vip.com/kongzhi/fram2.html';
4fram.style.display = 'none';
5document.body.appendChild(fram);
6fram.onload = function(){
7var doc = fram.contentDocument || fram.contentWindow.document;
8var p = doc.querySelector('p');
9document.body.appendChild(p);
10}
11</script>

 

很轻松搞定,希望对各位看官有所帮助,欢迎你来和我探讨交流学习。

 

原文链接-摘自大公爵

转载于:https://www.cnblogs.com/webhb/p/5755656.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值