私は最近、PhoneGap (v2.2.0) 上に構築されたモバイル アプリケーションで誰かを支援し始めました。現在、iOS に注力しています。
彼らが抱えている問題の 1 つは、表示可能な領域全体で「ボタン」をクリックできないことがあり、ユーザーにとってイライラすることです。
- これらのボタンは、基本的に
divs
イベントonClick
が表示されているだけです。 - Xcode を使用してブラウザーまたは iOS 6.1 エミュレーターでアプリを実行すると、の領域全体でイベントが
div
発生することがわかりました。onClick
この問題は、アプリを物理デバイスにロードしたときにのみ発生します。 - イベントが発生しない 15px 幅の「デッド」エリアがあるようです。これは、div の右側全体 (右端の 15 ピクセル程度) である場合もありますが、上部の 15 ピクセル程度である場合もあります。
- 他の JS ライブラリや CSS シートが原因で発生する可能性のある問題を排除するために、アプリを必要最小限にまとめました。サンプル アプリ全体は、次の index.html です。この例では、100x100px の div の上部 100x15px はイベントを発生させません。
コード:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
<script type="text/javascript">
var platform = '';
var userAgent = navigator.userAgent.toLowerCase();
if (userAgent.indexOf('android') > 0) {
platform = 'android';
}
else if (userAgent.indexOf('blackberry') > 0 || userAgent.indexOf('BB10') > 0) {
platform = 'blackberry';
}
else if (userAgent.indexOf('iphone') > 0 || userAgent.indexOf('ipad') > 0 || userAgent.indexOf('ipod') > 0) {
platform = 'ios';
}
// Using document.write here because head.appendChild(script) takes too long in Android 4.0+
if (platform) {
document.write('<script charset="utf-8" src="jscripts\/cordova\/cordova-2.2.0-' + platform + '.js"><\/script>');
}
</script>
<script type="text/javascript">
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
navigator.notification.alert("Cordova is working");
document.getElementById("btnButton").addEventListener("click", fooBar, false);
}
function fooBar() {
document.getElementById("btnButton").style.backgroundColor = "blue";
}
</script>
</head>
<body>
<div id="btnButton" style="height:100px; width:100px; background-color: red; color:white;" onclick="navigator.notification.alert('Sorry, incorrect');"></div>
</body>
</html>
誰かが私に何かアドバイスをくれるとしたら、残っている髪を抜くのをやめさせてくれるかもしれません. 私は最後の 1 日半をこれに費やし、物を削除し、グーグルで調べました。