js中location.reload可以跨页面传值么?

我有俩个页面,一个主页面查询让iframe跳转到子页面显示数据,并从子页面加载的方法中获取几个值传递到主页面进行数据绑定显示
求大神解答(要是能直接带上代码就更好,好人一生平安)

location.reload 方法是重新加载页面,这个相当于你按键盘的 F5 键,是不能带参数的。

按你说的意思,功能本身是可以实现的,但不是使用 location.reload ,而且是有前提条件的。
浏览器为了安全起见,是不能操作地址不同源的 iframe 标签里的内容的,只能对同源地址的iframe进行操作,什么是同源,如果你不了解,请先搜索一下”同源策略“,简单来说就是 iframe 标签所引入的页面,必须跟你的 主页面是同一个网站中的页面。
如果你上面的效果满足上述前提,也就是 iframe 中引入的页面跟主页面都是你自己写的,而且是同一个网站,那么实现的大概思路是这样的:
1, 点击主页面的查询,将数据显示在 iframe 页面里。
就是在主页面中发起查询请求,然后在iframe 页面中显示查询结果。这里需要js配合,有两种实现方式,一是通过地址栏传递参数,另一种是直接用 js 硬写入 iframe 页面中。 如果是通过地址栏传递参数,在点击主页面的查询之后,在js中使用 iframe.src = '.....html?key1=vaue1&key2=value2' 的方式传递给 iframe 页面,然后 iframe 页面中也需要用 js 来处理传递过来的参数,采用 location.search 来获取传递过来的所有参数,然后进行分割处理;如果是直接硬写入 iframe 页面中,则需要获取到 iframe 页面中相应的标签,获取当前页面中的某个元素,是用 document.get... 之类的方法,这里的 document 就是指当前页面的文档对象,那么获取 iframe ,当然得通过 iframe 页面的文档对象,获取iframe页面文档对象的方法是 iframe.contentWindow.document (iframe指的是 iframe标签,需要先用js获取到这个标签),获取到指定标签之后,就跟操作当前页面一样写数据了。

2,从iframe 子页面中返回数据到主页面中显示,这个跟上面第一步是一样的,也有两种实现思路,也是地址栏传递参数或者硬写,但因为地址栏传参会刷新页面,用户体验不好,所以还是采用硬写入的方式。 主页面写数据到iframe标签,需要先获取标签,反过来也是一样的,iframe页面中写数据到主页面,同样需要先获取到主页面中的标签,获取原理相通,先要找到主页面的文档对象,这里需要清楚整体的页面结构,主页面与 iframe 页面是直接的父子级关系,还是多层嵌套关系?如果是直接的父子关系,那就是 window.parent.contentWindow.document, 如果主页面是最顶层,那就是 window.top.contentWindow.document 。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-11-10
如果这个iframe页面是同域名的,那么可以通过parent对象来处理。

子页面获取父页面的dom元素
window.parent.document.getElementById('父页面元素id值');

如果是不同域名的那就是要跨域,只能通过json来交换数据了,定时从服务器某处读取内容然后显示。追问

同一文件夹下算同域名吧

追答

算同域名的

第2个回答  2021-11-11
跨页面传递参数
1)在输出页面使用字符串拼接参数传输到打开的新窗口

window.open("${ctx}/jsp/multimedia/MusicPlayer.jsp?event=true","我的音乐");

2)在接收参数页面通过同过Location 对象属性获取参数

//跨页面传递参数截取参数

$(function(){

//调用

var Request = new Object();

Request = GetRequest();

var event= Request.event;

});

function GetRequest() {

var url = location.search; //获取url中"?"符后的字串

console.log(url);

var theRequest = new Object();

if (url.indexOf("?") != -1) {

var str = url.substr(1);

strs = str.split("&");

for(var i = 0; i < strs.length; i ++) {

theRequest[strs[i].split("=")[0]]=decodeURI(strs[i].split("=")[1]);

}

}

console.log(theRequest);

return theRequest;

}

3)对与跨页面传递参数,如果是在同一个窗口,如window.location.href在同一窗口打开新窗口,可以使用sessionStorage,用sessionStorage可以随时获取你想要的参数,而且有时候,你想要在页面刷新前获取参数,只能用sessionStorage。本回答被提问者采纳
第3个回答  2021-11-10

父页面调用子页面js,通过js设置值

    var myFrame = document.getElementById("myFrame");

    myFrame.window.callFunction();//callFunction是你iframe加载的页面里面定义的函数,这样就可以执行,可以让函数带参数就可以传值了。调用的时机是在iframe页面加载完成

子页面调用父页面一样的方法,不一样的是直接用parent关键字不用获取元素

parent.window.callFunction();//主页面定义的函数。可以设置参数,就能回传了。

追问

我俩个页面在同一个文件夹下的,你说的获取和传值的方式我试了一下没有获取到

追答

具体要远程看看。每个人写的代码都不一样。

第4个回答  2021-11-10
传值应该使用location.search