JQuery Mobile-JavaScript何时加载到DOM中
JQuery Mobile - When is JavaScript loaded into the DOM?
我有一个JQuery Mobile应用程序,我在应用程序中似乎有几个位置的JavaScript没有按预期执行。简而言之,我有一个"仪表板"页面。如果用户还没有登录,我会使用"changePage"功能将其发送回登录页面。
如果我尝试直接通过登录页面登录,一切都会如预期一样。但是,如果我从Dashboard页面重定向到Login页面,我会看到一个JavaScript错误,上面写着:"loginButton_Click未定义"。为了提供更多的见解,这里是我的代码:
Dashboard.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" />
<script src="/jquery-1.6.4.min.js" type="text/javascript"></script>
<script type="text/javascript" src="/scripts/shared.js"></script>
<script src="/scripts/jquery.mobile-1.0.1.min.js" type="text/javascript"></script>
</head>
<body>
<div id="dashboardPage" data-role="page">
<div data-role="header">
<a id="logoutButton" href="#" class="ui-btn-left jqm-home">Logout</a>
<h1>My App</h1>
</div>
<div data-role="content">
<ul data-role="listview">
<li data-role="list-divider"><span id="greeting"></span></li>
</ul><br />
</div>
</div>
</body>
</html>
共享.js
$("#dashboardPage").live("pagecreate", function () {
});
$("#dashboardPage").live("pagebeforeshow", function () {
});
$("#dashboardPage").live("pageshow", function () {
var user = window.localStorage.getItem("user");
if (user == null) {
$.mobile.changePage("/login.html", { transition: "slide" });
}
});
login.html
<html>
<head>
<meta charset="utf-8" />
<title></title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" />
<script src="/jquery-1.6.4.min.js" type="text/javascript"></script>
<script type="text/javascript" src="/scripts/shared.js"></script>
<script src="/scripts/jquery.mobile-1.0.1.min.js" type="text/javascript"></script>
</head>
<body>
<div id="loginPage" data-role="page">
<div data-role="header"><h1>App Name</h1></div>
<div data-role="content">
<label for="usernameTextBox">Username</label>
<input id="usernameTextBox" type="text" /><br />
<label for="passwordTextBox">Password</label>
<input id="passwordTextBox" type="password" /><br />
<input type="button" value="Login" onclick="return loginButton_Click();" />
</div>
</div>
<script type="text/javascript">
function loginButton_Click() {
$.mobile.changePage("/dashboard.html", { transition: "slide" });
}
</script>
</body>
</html>
关于JavaScript如何进入DOM,我觉得有些事情我不明白。我做错了什么?
在shared.js中添加$(…)包装器:
$(function(){
$("#dashboardPage").live("pagecreate", function () {
});
$("#dashboardPage").live("pagebeforeshow", function () {
});
$("#dashboardPage").live("pageshow", function () {
var user = window.localStorage.getItem("user");
if (user == null) {
$.mobile.changePage("/login.html", { transition: "slide" });
}
});
});
相关文章:
- 在DOM加载时触发函数
- 即使在 DOM 加载后也无法设置 null 的 .innerHTML
- 如何获取javascript/dom加载和处理时间的指标
- angularjs 子指令 DOM 加载速度不够快
- 如何在 DOM 加载后使用 JavaScript 或 JQuery 从 href 属性中删除字符
- 如何激活 bootstrap.tagsinput 用于 DOM 加载后添加的输入
- 计算表中的行数(如果行是在 DOM 加载后创建的)
- 如何等到 DOM 加载后再将脚本标记添加到
- jQuery:在 DOM 加载 .on() 和 .click() 后点击 Chrome
- Javascript:使用dom加载的页面进行匹配
- 使用CSS3的供应商特定前缀的性能和DOM加载
- 在dom加载后包含外部脚本
- Dom加载事件跨浏览器原生javascript代码
- DOM加载时的断点
- DOM加载和引用Javascript函数中的元素
- 高度:自动计算错误,如果元素隐藏时dom加载,然后显示
- 如何在DOM加载后运行jQuery的备用副本?
- 在DOM加载并显示在浏览器中之前修改body HTML内容
- 搜索DOM加载的页面
- 使用文档时,在DOM加载后添加的按钮上单击事件不运行