我正在尝试为iOS创建一个非常简单的手机间隙应用程序。我正在使用查询移动设备。问题是,我无法在按钮点击时触发javascript事件 我现在的代码:
<!DOCTYPE html>
<html>
<head>
<title>Title</title>
<meta name="viewport" content="width=device-width, minimum-scale=1, maximum-scale=1">
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="js/jquery.mobile-1.2.0.css" />
<script type="text/javascript" charset="utf-8" src="cordova-1.8.1.js"></script>
<script type="text/javascript" charset="utf-8" src="js/jquery-1.8.2.min.js"></script>
<script type="text/javascript" charset="utf-8" src="js/jquery.mobile-1.2.0.min.js"></script>
<script type="text/javascript">
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
}
function showAlert() {
navigator.notification.alert("Cordova is working");
}
</script>
</head>
<body>
<div data-role="page" id="options" data-add-back-btn="true" data-back-btn-text="Atgal">
<div data-role="header" data-position="fixed">
<h1>Title</h1>
</div>
<div data-role="content">
<h1>Alert</h1>
<p><a href="#" onclick="showAlert(); return false;" data-role="button">Show alert</a></p>
</div>
</div>
</body>
</html>
我尝试了多种解决方案来解决我的问题,但没有一种能够解决问题。如果在href中有#符号的按钮,则不会在单击时更改颜色。当我添加网址时,它会改变颜色。但它永远不会调用javascript函数。
另一个问题是,document.addEventListener("deviceready", onDeviceReady, false);
仅在索引页面中起作用。如果我按下初始页面中的按钮重定向到另一个页面,则永远不会调用OnDeviceReady函数
有人有什么想法吗?
答案 0 :(得分:2)
onDeviceReady()
仅被调用一次(当设备(即Cordova)准备就绪时)。每次导航到页面时,您都希望$(document).on('pageinit', '#pageid', function() { });
能够触发。
答案 1 :(得分:2)
在body标签中你需要添加标签,javascript中的onBodyLoad()函数应该是这样的:
function onBodyLoad()
{
document.addEventListener("deviceready", onDeviceReady, false);
}
答案 2 :(得分:1)
我是一个手机缺口和查询手机的总菜鸟,所以我犯了一个愚蠢的错误。问题是,当我点击按钮时,它不会加载整页,而只是加载身体部位。这意味着它只使用第一页中的javascript。那是我的问题。现在我把所有的javascript都放到了单独的文件中(两个文件的所有javascript)都可以运行。
答案 3 :(得分:0)
使用jQuery尝试以下内容:
<!DOCTYPE html>
<html>
<head>
<title>Title</title>
<meta name="viewport" content="width=device-width, minimum-scale=1, maximum-scale=1">
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="js/jquery.mobile-1.2.0.css" />
<script type="text/javascript" charset="utf-8" src="cordova-1.8.1.js"></script>
<script type="text/javascript" charset="utf-8" src="js/jquery-1.8.2.min.js"></script>
<script type="text/javascript" charset="utf-8" src="js/jquery.mobile-1.2.0.min.js"></script>
<script type="text/javascript">
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
}
function showAlert() {
navigator.notification.alert("Cordova is working");
}
$(function() {
$("#my_link").click(function() {
showAlert();
});
});
</script>
</head>
<body>
<div data-role="page" id="options" data-add-back-btn="true" data-back-btn-text="Atgal">
<div data-role="header" data-position="fixed">
<h1>Title</h1>
</div>
<div data-role="content">
<h1>Alert</h1>
<p><a id="my_link" href="#" data-role="button">Show alert</a></p>
</div>
</div>
</body>
</html>
希望这会有所帮助。让我知道你的结果。
答案 4 :(得分:0)
即使我为md按钮设置了更高的z-index,它仍然不会点击iOS。它在Android上点击了很好。我必须在我的情况下设置一个父容器<md-subheader>
到z-index:-1;然后它奏效了。