时间:2021-10-03 17:02:00 | 栏目:JavaScript代码 | 点击:次
在项目中遇到这也一个问题:
有a.html和b.html。
1.a页面已经打开,b页面尚未打开,我希望在a页面设置好一些列参数,比如背景色,宽度等参数,传递给b页面,好让b页面在打开就能应用。
2.a页面已经打开,b页面无论是否打开。在a页面需要获取到b页面的一些元素甚至变量,以便于应用到a页面。
注意:不涉及跨域问题。
想了很久,终于想到了解决方案。
第一个问题,我们可以利用html页面锚点的特性,将参数通过url传递给b页面
这是a页面代码:
<button>跳转设置</button> <script> var btn = document.querySelector('button'); console.log(window); btn.addEventListener('click', function(){ window.location = 'ci.html#bgc=#369?wd=500' }) </script>
由代码可以知道,点击按钮跳转页面,跳转的url后面多了一系列参数,这个并不会影响跳转的地址,当b页面打开后,可以获取location截取字符串获得变量及变量值,再进行应用。
这是b页面代码:
<div></div> <script> var div = document.querySelector('div'); var bl = window.location.hash.slice(1).split('?'); if(bl.length >= 1){ for(var i = 0; i < bl.length; i += 1){ switch (bl[i].split('=')[0]) { case 'bgc': document.body.style.background = bl[i].split('=')[1]; break; case 'wd': div.style.width = bl[i].split('=')[1] + 'px'; break; default: null; break; } } } </script>
通过截取字符串取得url传递过来的变量应用。成功!
第二个问题,我想的是通过iframe来达到目的,这只是一个障眼法。
在a页面动态创建一个iframe,并设置src值为b页面,display为none。再通过iframe的contentDocument属性获取返回的iframe的文档。
在文档内获取到所需要的元素并应用。
源码:
<span>11111111111</span> <script> var fram = document.createElement('iframe'); fram.src = 'http://www.vip.com/kongzhi/fram2.html'; fram.style.display = 'none'; document.body.appendChild(fram); fram.onload = function(){ var doc = fram.contentDocument || fram.contentWindow.document; var p = doc.querySelector('p'); document.body.appendChild(p); } </script>