如何使用window.open从Java Script中的父窗口向子窗口传递参数。
请给我任何想法。
答案 0 :(得分:1)
您可以使用查询字符串来传递参数,这是一种更好的方法。
关于使用 window.open 传递参数的要求。您可以访问某些元素和全局变量,但不能保留值。例如:当您执行以下代码时
popupWindow = window.open(url,'popUpWindow','height=500,width=500');
popupWindow.alert("test");
打开新窗口时会看到警告。但是数据将仅在该警报之后加载。因此,即使您能够在子javascript中设置任何全局变量的值,但由于页面在窗口打开后加载,因此无法保留该值,因此数据将被刷新。
答案 1 :(得分:0)
为子窗口创建html时,在html中创建一个隐藏字段并进入子窗口。
答案 2 :(得分:0)
什么样的参数?我的意思是,参数是什么? 例如,您可以在网址中添加GET值:
window.open("http://example.com/script.php?KEY=value")
然后你会在你的(用PHP)中获得$ _GET [' KEY']这个'值'
答案 3 :(得分:0)
将值作为查询字符串传递
尝试下载
window.open("url.php?param=value¶m2=value2");
答案 4 :(得分:0)
我最初尝试过这个:
父窗口:
var parms = {arg1: "arg1", arg2:"arg2"};
var handle = window.open(url);
// stringifyed to make sure the child window does
//not try to access object by reference from child to parent.
handle.window.parameters = JSON.stringify(parms);
子窗口:
$(document).ready(function(){
var args = JSON.parse( window.parameters);
// and so on.
});
问题是在子窗口准备好之前偶尔会设置该值,所以当子窗口准备就绪时,它将是未定义的。
所以相反,我使用了sessionStorage(注意:这不适用于跨域。)
家长:
// the user can cause more than one child window so I give storage a unique id.
var parms = JSON.stringify({arg1: "arg1", arg2:"arg2"});
var storageId = "parms" + String(Date.now());
sessionStorage.setItem(storageId, parms);
window.open(url + "?sid=" + storageId);
关于孩子:
$(document).ready(function(){
var prmstr = window.location.search.split("=");
var sid = prmstr[1];
var args = JSON.parse(sessionStorage.getItem(sid));
sessionStorage.removeItem(sid);
// and so on
});