JavaScript から window.open("reg.htm") として直接 reg.htm を呼び出すと、私の index.html コードは正常に動作します (ページ上の JavaScript が呼び出され、AJAX とコールバックがすべて機能し、DB が更新されます)。ただし、タグを使用して REG.HTM を呼び出し、data-rel="dialog" の jQueryMobile タグを配置すると、ファイルは開きますが、JavaScript は呼び出されません。
index.html (works) 映画リマインダー
<style type="text/css">
<!--
.image { position: relative; width: 100%; /* for IE 6 */ }
.register { position: absolute; top: 250px; left: 0; width: 100%; padding-left: 106px;}
.login { position: absolute; top: 250px; left: 0; width: 100%; padding-left: 106px;}
-->
</style>
<script language="Javascript">
document.addEventListener("deviceready", onDeviceReady, false);
// Cordova is ready
function onDeviceReady()
{
var user = window.localStorage.getItem("user");
alert ("Device Ready");
if (user == null)
window.open("reg.htm");
else
{
var token = window.localStorage.getItem("token");
if (token == null)
window.open("login.htm");
else
window.open("search.htm");
}
}
$(document).ready(function() {
setTimeout("onDeviceReady()", 2000);
});
</script>
</head>
<body topmargin="0" leftmargin="0">
<div class="image">
<img src="images/mov-rem-bkgd.jpg" alt="" />
</div>
</body>
</html>
動作しないタグを使用して呼び出すコードは次のとおりです。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Movie Reminder</title>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
<style type="text/css">
<!--
.image { position: relative; width: 100%; /* for IE 6 */ }
.register { position: absolute; top: 250px; left: 0; width: 100%; padding-left: 106px;}
.login { position: absolute; top: 250px; left: 0; width: 100%; padding-left: 106px;}
-->
</style>
<script language="Javascript">
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
if (window.localStorage.getItem("user") == null)
$('.register').show();
else {
if (window.localStorage.getItem("token") == null) $('.login').show();
else window.open("search.htm");
}
}
$(document).ready(function() { setTimeout("onDeviceReady()", 2000); });
</script>
</head>
<body topmargin="0" leftmargin="0">
<div class="image">
<img src="images/mov-rem-bkgd.jpg" alt="" />
<div class="register">
<a href="reg.htm" data-role="button" data-inline="true" data-rel="dialog" data-transition="pop">Register</a>
</div>
<div class="login" style="display:none">
<a href="login.htm" data-role="button" data-inline="true" data-rel="dialog" data-transition="pop">Login</a>
</div>
</div>
</body>
</html>
次のコードを含む単純な reg.htm ファイルを作成すると、JavaScript が index2.htm によって呼び出されるのではなく、index1.htm によってのみ呼び出されることがわかります。
<script>
$(document).ready(function() {
alert ("doc ready");
$('.ui-btn-hidden').click(function(event) {
$("#regform").submit(function(event) {
if ($('.ui-btn-hidden').attr("value") == "Submit")
{
alert ("inside submit");
var postData = "username=foo";
var urlStr = "http://www.fohost.co/mr/regUser/index.php?";
$.ajax({
url: urlStr,
data: encodeURI(postData),
dataType: "jsonp",
success: doCallback
});
return false;
}
});
});
});
function doCallback(data) {
alert("doCallback");
if (data.success == "true")
window.open("login.htm");
}
</script>
誰にも考えはありますか?