Javascript:使用location.assign后,全局变量变为null

时间:2014-05-25 11:55:09

标签: javascript html

我以这种方式拥有2个html和3个js文件

globals.js --> 
    testIndex = 1;

login.html
    //includes global.js and login.js. Fires event() function on a button click

login.js
    function event()
    { 
         window.testIndex = 2;
         window.location.assign('index.html')
    }

index.html
    //includes globals.js and index.js
    fires init() function onLoad

index.js
    function init()
    {
         alert(window.testIndex);
    }

分配工作正常,但index.html中的警告框始终显示1.当我使用window.location.assign时,我的全局变量正在重新初始化。我需要传递一些变量(其中一些不是纯文本字符串,因此无法使用url)。我该怎么办?

1 个答案:

答案 0 :(得分:3)

将变量保存在多个页面中的最简单方法是使用HTML5 sessionStorage。但是,此功能仅适用于现代浏览器(IE8 +)。 有关旧浏览器的polyfill,请参阅here (html5polyfill.com)

有关sessionStorage的更多信息,请访问here (MDN)

sessionStorage示例:

globals.js --> 
    sessionStorage['testIndex'] = 1;

login.html
    //includes global.js and login.js. Fires event() function on a button click

login.js
    function event()
    { 
         sessionStorage['testIndex'] = 2;
         window.location.assign('index.html')
    }

index.html
    //includes globals.js and index.js
    fires init() function onLoad

index.js
    function init()
    {
        alert(sessionStorage['testIndex']);
    }

如果您需要存储非字符串对象,请先使用JSON.stringify()将其转换为字符串表示形式,然后使用JSON.parse()将其读回。