Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.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:使用location.assign后,全局变量变为null_Javascript_Html - Fatal编程技术网

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

Javascript:使用location.assign后,全局变量变为null,javascript,html,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.assig

我有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)。我该怎么办?

跨多个页面持久化变量的最简单方法是使用HTML5会话存储。但是,此功能仅在现代浏览器(IE8+)中可用。 有关旧浏览器的多边形填充,请参见

可以找到有关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']);
    }

如果需要存储非字符串对象,请首先使用将其转换为字符串表示形式,然后使用将其读回。

跨多个页面持久化变量的最简单方法是使用HTML5会话存储。但是,此功能仅在现代浏览器(IE8+)中可用。 有关旧浏览器的多边形填充,请参见

可以找到有关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']);
    }

如果需要存储非字符串对象,请首先使用将其转换为字符串表示形式,然后使用将其读回。

跨多个页面持久化变量的最简单方法是使用HTML5会话存储。但是,此功能仅在现代浏览器(IE8+)中可用。 有关旧浏览器的多边形填充,请参见

可以找到有关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']);
    }

如果需要存储非字符串对象,请首先使用将其转换为字符串表示形式,然后使用将其读回。

跨多个页面持久化变量的最简单方法是使用HTML5会话存储。但是,此功能仅在现代浏览器(IE8+)中可用。 有关旧浏览器的多边形填充,请参见

可以找到有关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']);
    }


如果需要存储非字符串对象,请首先使用将其转换为字符串表示形式,然后使用将其读回。

我尝试过这样做:global.js中的Used window.testIndex=1尝试删除index.html中包含的global.js(认为在同一窗口中再次包含该文件可能会产生问题)某些浏览器已具有引用上次创建的事件对象的window.event属性。通常因此,创建一个名为event的函数不是一个好主意。;-)您设置了一个全局属性,然后加载另一个文档,这将创建一个新的全局(窗口)对象。是的。那么如何维护不同文档中的一些变量呢?顺便说一句,event()只是一个例子。这些不是真正的函数名。我尝试过这样做:在global.js中使用window.testIndex=1尝试删除index.html中包含的global.js(认为在同一窗口中再次包含该文件可能会产生问题)某些浏览器已经具有一个window.event属性,该属性引用了上次创建的事件对象。通常因此,创建一个名为event的函数不是一个好主意。;-)您设置了一个全局属性,然后加载另一个文档,这将创建一个新的全局(窗口)对象。是的。那么如何维护不同文档中的一些变量呢?顺便说一句,event()只是一个例子。这些不是真正的函数名。我尝试过这样做:在global.js中使用window.testIndex=1尝试删除index.html中包含的global.js(认为在同一窗口中再次包含该文件可能会产生问题)某些浏览器已经具有一个window.event属性,该属性引用了上次创建的事件对象。通常因此,创建一个名为event的函数不是一个好主意。;-)您设置了一个全局属性,然后加载另一个文档,这将创建一个新的全局(窗口)对象。是的。那么如何维护不同文档中的一些变量呢?顺便说一句,event()只是一个例子。这些不是真正的函数名。我尝试过这样做:在global.js中使用window.testIndex=1尝试删除index.html中包含的global.js(认为在同一窗口中再次包含该文件可能会产生问题)某些浏览器已经具有一个window.event属性,该属性引用了上次创建的事件对象。通常因此,创建一个名为event的函数不是一个好主意。;-)您设置了一个全局属性,然后加载另一个文档,这将创建一个新的全局(窗口)对象。是的。那么如何维护不同文档中的一些变量呢?顺便说一句,event()只是一个例子。这些不是真正的函数名。嗨,Tribex,谢谢你的回答。这类似于我刚刚发现的localStorage,也是我正在寻找的。但是,我确实需要传递对象。所以我使用了stringify和parse。但是在第二个html文件中,在解析之后,当我试图调用该对象的fufunction时,firebug说没有这样的函数。没问题!我正在做一个使用本地存储的项目。很抱歉,JSON是一种数据交换格式,因此无法存储函数。记住这一点,您不必存储函数,只需存储数据。如果您确实必须这样做,请将函数编写为字符串(然后可以存储和检索该字符串),并使用.Ok解析它。理解。无功能存储。但是我又不在了。问题是我有一个websocket对象,它在login.html中与服务器建立连接。打开websocket cconnection后,我希望将此websocket对象传递到我的index.html,并使用它向服务器发送数据(令牌)。现在,如果我不能将函数定义和所有内容传递给index.html,那么我如何使用它的方法发送数据。我对WebSocket做得不多,但你不能创建一个新的连接吗?(我想你有充分的理由不这样做)是一个处理你的问题的SO问题。创建新的身份验证连接意味着再次发送登录凭据。这不会是最优的。这里面没有login.html的意义。我不妨通过考试