我的网络应用初始化方法基于加载的页面运行。
我需要全局变量仅可用于第1页的第2页。所以我想要做的是仅在加载第1页时定义并初始化全局变量。我确信有办法做到这一点,但我不知道如何做。
我粘贴了我相关的初始化方法和我需要的两个全局方法。目前,它们是在第1页重新加载和第2页重新加载时定义和初始化的。
我希望他们只为第1页重新加载定义一个初始化。
/********************
group:globals
********************/
var local =
{
client_validation:1,
persistent_element:'hide_1'
};
window.onload=initialize_page;
/*
- initialize_page() - function activated on each page load or reload. Set by global window.onload
*/
function initialize_page()
{
var signin_found;
/*Used to determine which page is loaded / reloaded*/
if(signin_found=document.getElementById('signin_button'))
{
signin_found.onclick=interface_signin;
/*Interfaces and bindings*/
答案 0 :(得分:1)
我认为你可能会为自己过度复杂,因为有问题的变量使用的是可忽略的内存,但无论如何,我能想到的最简单的方法就是这样做:
function initialize_page() {
if (/* somehow figure out if you're on page one */) {
window.local = {
client_validation:1,
persistent_element:'hide_1'
};
}
// etc.
}
请注意,您不能通过在var
中放置if
语句来有条件地声明变量:JavaScript没有块范围(仅限函数范围),因此它将“提升”声明在if
之外。但是在全局变量的情况下,你可以解决这个问题,因为全局变量基本上只是window
对象的属性,所以可以有条件地创建属性,如上所示。
如果您后来发现两个页面都有一些共同的变量,但也有各自独立的要求,您可以这样做:
var local = {
commonSetting1 : "something",
commonSetting2 : "something else"
}
function initialize_page() {
if (/* page one? */) {
// add page one's settings
local["client_validation"] = 1;
local["persistent_element"] = "hide_1";
} else if (/* page two? */) {
// add page two's settings
local["somePageTwoSetting"] = "whatever";
// etc.
}
}