Phonegap (Cordova) iOS 按钮单击
Posted
技术标签:
【中文标题】Phonegap (Cordova) iOS 按钮单击【英文标题】:Phonegap (Cordova) iOS button click 【发布时间】:2012-10-08 18:33:48 【问题描述】:我正在尝试为 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 函数。
有人有什么想法吗?
【问题讨论】:
【参考方案1】:onDeviceReady()
只被调用一次(当设备(即 Cordova)准备好时)。每次导航到页面时,您都需要 $(document).on('pageinit', '#pageid', function() );
触发一些东西。
【讨论】:
不知道为什么,但这也不起作用。甚至 $(document).ready 也无济于事。【参考方案2】:在body标签中你需要添加标签,javascript中的onBodyLoad()函数应该是这样的:
function onBodyLoad()
document.addEventListener("deviceready", onDeviceReady, false);
【讨论】:
【参考方案3】:我是一个完全没有电话间隙和查询手机的菜鸟,所以我犯了一个愚蠢的错误。问题是,当我单击按钮时,它不会加载整个页面,而只是加载正文部分。这意味着,它只使用第一页中的 javascript。那是我的问题。现在我已将所有 javascript 放入单独的文件(两个文件的所有 javascript)并且它可以工作。
【讨论】:
【参考方案4】:使用 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>
希望这会有所帮助。让我知道你的结果。
【讨论】:
我试过这个:<p><a href="javascript:showAlert()" data-role="button">Atnaujinti</a></p>
。按钮看起来可以正常工作(点击时改变颜色),但没有任何反应。【参考方案5】:
即使我为 md 按钮设置了更高的 z-index,它仍然不会在 iOS 上单击。它在 android 上运行良好。在我的情况下,我必须将父容器 <md-subheader>
设置为 z-index: -1;然后就成功了。
【讨论】:
以上是关于Phonegap (Cordova) iOS 按钮单击的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 8 上的 Cordova / PhoneGap 应用程序中隐藏键盘表单附件栏? [复制]
如何在iOS 8上的Cordova / PhoneGap应用程序中隐藏键盘表格附件栏? [重复]
如何使用手机的本机应用程序打开图像 - Cordova / phonegap
AngularJS 中的移动后退按钮与 Cordova/PhoneGap 不起作用