Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript,访问其他窗口的变量_Javascript_Window - Fatal编程技术网

Javascript,访问其他窗口的变量

Javascript,访问其他窗口的变量,javascript,window,Javascript,Window,我必须用两个不同的窗口创建一个网页,让它们共享一些变量 加载主窗口后,将打开第二个窗口,在这里我可以存储第二个窗口对象并访问其变量: 主窗口 var mainvar=1; var secondwindow=open('second.htm'); $("button").click(function(){ alert(secondwindow.testvar); }); var secondvar=2; var mainwindow;// how can I set this? $("b

我必须用两个不同的窗口创建一个网页,让它们共享一些变量

加载主窗口后,将打开第二个窗口,在这里我可以存储第二个窗口对象并访问其变量:

主窗口

var mainvar=1;
var secondwindow=open('second.htm');
$("button").click(function(){
    alert(secondwindow.testvar);
});
var secondvar=2;
var mainwindow;// how can I set this?
$("bunno").click(function(){
   alert(mainwindow.testvar);
});
var mainvar=1;
var secondwindow=open('second.htm');
$("button").click(function(){
    alert(secondwindow.testvar);
});
$(secondwindow).load(function() {
    secondwindow.mainwindow=window;
});
var secondvar=2;
var mainwindow=false;
$("bunno").click(function(){
   alert(mainwindow.testvar);
});
当我想从第二个窗口脚本访问主窗口变量时,我的问题就开始了:

第二个窗口

var mainvar=1;
var secondwindow=open('second.htm');
$("button").click(function(){
    alert(secondwindow.testvar);
});
var secondvar=2;
var mainwindow;// how can I set this?
$("bunno").click(function(){
   alert(mainwindow.testvar);
});
var mainvar=1;
var secondwindow=open('second.htm');
$("button").click(function(){
    alert(secondwindow.testvar);
});
$(secondwindow).load(function() {
    secondwindow.mainwindow=window;
});
var secondvar=2;
var mainwindow=false;
$("bunno").click(function(){
   alert(mainwindow.testvar);
});

我的建议是使用存储变量,并使它们在窗口和会话之间可访问

localStorage.setItem('myValue', '1234');//in window 1
alert(localstorage.myValue)//in window 2

如果做不到这一点,也可以使用。不太安全,但如果您不在窗口之间传递安全数据,这也会起作用。

我发现这可能适合:

主窗口

var mainvar=1;
var secondwindow=open('second.htm');
$("button").click(function(){
    alert(secondwindow.testvar);
});
var secondvar=2;
var mainwindow;// how can I set this?
$("bunno").click(function(){
   alert(mainwindow.testvar);
});
var mainvar=1;
var secondwindow=open('second.htm');
$("button").click(function(){
    alert(secondwindow.testvar);
});
$(secondwindow).load(function() {
    secondwindow.mainwindow=window;
});
var secondvar=2;
var mainwindow=false;
$("bunno").click(function(){
   alert(mainwindow.testvar);
});
第二个窗口

var mainvar=1;
var secondwindow=open('second.htm');
$("button").click(function(){
    alert(secondwindow.testvar);
});
var secondvar=2;
var mainwindow;// how can I set this?
$("bunno").click(function(){
   alert(mainwindow.testvar);
});
var mainvar=1;
var secondwindow=open('second.htm');
$("button").click(function(){
    alert(secondwindow.testvar);
});
$(secondwindow).load(function() {
    secondwindow.mainwindow=window;
});
var secondvar=2;
var mainwindow=false;
$("bunno").click(function(){
   alert(mainwindow.testvar);
});

当你说“窗口”时,你是说“浏览器”选项卡吗?不确定它是否会起作用,但是把主窗口放进去怎么样:
secondwindow.mainwindow=window
?@PierreDuc是个不错的主意,但它不起作用,可能它必须在第二个窗口的计时器或onload事件中设置…@Tobia尝试在按钮单击事件中设置它:)您确定它将在那时加载,据我所知,可以使用window.opener.variable从第二个窗口访问主窗口非常好的方法