在新窗口中访问JavaScript变量

时间:2013-04-25 12:47:09

标签: javascript variables

这是我的第一次JavaScript尝试,所以如果事情有点受损,我会道歉。

我有两个html页面(Certificate1.html和Certificate2.html)。我要做的是在Certificate1.html上提示用户输入他/她的名字,然后将该信息传递给Certificate2.html。此时,用户的姓名将显示在他可以打印的证书中。

两个html页面都引用相同的JavaScript文件(Certificate1.js)。第一页调用passName():

function passName() {
    FirstN = document.frmUserName.inFirstN.value;
    LastN = document.frmUserName.inLastN.value;
   // alert(FirstN); // good
   // alert(LastN); // good
    var Cert = window.open("Certificate2.html");
    Cert.FirstN = FirstN;
    Cert.LastN = LastN;
    //alert(Cert.FirstN); //good
    //alert(Cert.LastN); //good
}

这似乎工作正常。我被卡住的地方是Certificate2.html调用的函数placeName()。我已经解决了onLoad,我知道它正在正确访问该功能(我只是在那里发出警报并且它出现了)。我不知道如何访问我在passName()中传递给Cert的FirstN和LastN变量。我已经尝试过document.FirstN,但我得到了“未定义”。如何访问我(我认为)传递的FirstN和LastN变量?

谢谢! -Kristin

更新:

得到了!!!

我不需要通过window.opener访问它 - 我已经将变量传递给窗口,所以我可以直接访问它们。

function placeName() {
    //alert(FirstN);
    document.getElementById("pUserName").innerHTML = FirstN + " " + LastN;
}

谢谢你们! -Kristin

4 个答案:

答案 0 :(得分:3)

HTML LocalStorage(HTML5) http://diveintohtml5.info/storage.html

在你的第一个档案中:

localStorage.setItem("FirstN", document.frmUserName.inFirstN.value);

在第二个:

var FirstN = localStorage.getItem("FirstN");

或只是设置Cookie ...

http://www.w3schools.com/js/js_cookies.asp

但我认为这应该使用PHP或至少不是JS

来完成

答案 1 :(得分:2)

在新窗口中使用window.opener对象。

window.opener.FirstN

W3Schools Examples

Can I pass a JavaScript variable to another browser window?

以下内容适用于我的设置:

first.html

<html>
 <script>
   var Var1 = "MyStringVar";
   var Var2 = 123;
   var win = window.open("second.html");
 </script>
</html>

second.html

<html>
 <script>
   alert(window.opener.Var1);
   alert(window.opener.Var2);
 </script>
</html>

答案 2 :(得分:0)

更新:

得到了!!!

我不需要通过window.opener访问它 - 我已经将变量传递给窗口,所以我可以直接访问它们。

function placeName() {
    //alert(FirstN);
    document.getElementById("pUserName").innerHTML = FirstN + " " + LastN;
}

谢谢你们! -Kristin

答案 3 :(得分:0)

在第一个窗口文件中:

window.yourVariable = value;

在第二个窗口文件中:

window.opener.yourVariable

decription:将yourVariable声明为全局并将其绑定到父窗口。 如果从父窗口打开新窗口,则可以从'window.opener'访问数据。由于yourVariable被声明为全局,因此可以使用'window.opener.yourVariable'从子窗口访问父窗口的值