【问题标题】:Javascript, access to variables of other windowJavascript,访问其他窗口的变量
【发布时间】:2016-03-11 09:59:41
【问题描述】:

我必须制作一个有两个不同窗口的网页,并让它们共享一些变量。

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

主窗口

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);
});

【问题讨论】:

  • 你说的窗口是指浏览器标签吗?
  • 不确定它会起作用,但是在主窗口中输入如何:secondwindow.mainwindow = window?
  • @PierreDuc 不是一个坏主意,但它不起作用,也许它必须在第二个窗口的计时器或 onload 事件中设置......
  • @Tobia 尝试在按钮点击事件中设置它:) 你确定它会被加载到那时
  • 据我所知,主窗口可以通过 window.opener.variable 从第二个窗口访问

标签: javascript window


【解决方案1】:

我的建议是使用localstorage 来存储变量并使其在窗口和会话之间可访问。

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

否则,cookies 也可以使用。不太安全,但如果您不在窗口之间传递安全数据,这也可以。

【讨论】:

    【解决方案2】:

    我发现这个可能适合:

    主窗口

    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);
    });
    

    【讨论】:

    • 非常好的方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    相关资源
    最近更新 更多