4

我正在开发一个可以在更高版本的设备中完美运行的项目——我已经在 4.1.2 版本中对其进行了检查。

问题是它不适用于 android 版本 2.2.1 和 2.3.5 的设备。

我有六个图像,我已经添加了功能。2 个图像的功能是使用 id 值调用不同的 HTML 页面。其他四个图像的功能也相同,但图像将根据数据库值显示。

2 个图像的功能是使用 id 值调用不同的 HTML 页面。

这就是我编码的方式..

<div id="header " class="header ">
     <div id="header_title" class="header_title"> </div>
     <div id="abc" class="abc"><img src="img/abc.png" onClick="abc()"/></div>
-----so -on

我已将 abc 函数声明为

function abc(){
   window.location.href="index.html";
}

其他四个图像的功能也相同,但图像将根据数据库值显示。

if(value_in_db==0) {
  document.getElementById("xyz").innerHTML = '<img src="img/inactive.png" />'
} else {
  document.getElementById("xyz").innerHTML = '<img src="img/active.png" onclick="xyz()"/> '
}

我已将 xyz 函数声明为

function xyz(){
   window.location.href="basic.html";
}

面临的问题:

onclick 功能在 android 版本 2.2.1 和 2.3.5 中偶尔起作用。当继续尝试突然单击时,该功能被调用。我已经尝试修复此错误将近 2 天。

我在 CSS position:fixed 上遇到过类似的问题。这在较低版本的 android 中不受支持。这里建议我提供一个解决方案。

我已经尝试过这个addEventListener 函数,它对我不起作用。

我希望我能找到解决这个问题的方法。

请帮我解决这个问题并指导我!

编辑:1 touchevent 和 deviceready

document.addEventListener("deviceready", onDeviceReady, false);
document.addEventListener( "touchstart", function(e){ onStart(e); }, false );
function onStart ( touchEvent ) 
{
   if( navigator.userAgent.match(/Android/i) ) 
   {
        touchEvent.preventDefault();
   }
}

这适用于高端版本,但不适用于低端版本。我知道提及 2 是毫无根据的document.addEventListener..因为它在更高版本中工作。我继续它。

4

3 回答 3

4

这是非常基本的功能,应该适用于所有版本的 Android - 您确定不是代码中的其他内容导致了问题吗?

我在运行 Android 2.3.4 的 HTC HD2 上使用最新的 Cordova 2.8.0 尝试了这个测试用例,它运行良好:

<!DOCTYPE html>
<html>
    <head>     
        <meta charset="utf-8">
        <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
        <script type="text/javascript">
            function abc(){
               window.location.href="foo.html";
            }
        </script>
    </head>
    <body>
         <h1>Index page</h1>
         <div id="abc" class="abc"><img src="img/abc.jpg" onClick="abc()"/></div>
    </body>
</html>

您可以在此处下载我的 Eclipse 测试项目和编译的 APK并在您的设备上试用。

根据您的 JSFiddle 代码更新:

您的 HTML 包含多个语法错误 - 其中之一可能会导致 Android 2.x 出现问题,而 4.x 可能更容错:

1) #header id 属性包含尾随空格。代替

<div id="header " class="header "><div id="header" class="header">

2) 应引用属性值。替换<img name="slide" src="img/abc.jpg" width=100%; /><img name="slide" src="img/abc.jpg" width="100%" />

3)你有一个额外的结束 div 标签。代替

<div id="footer"  class="footer">
    <div id="footer_text" style="color:#ffffff">footer</div>
    </div>
</div>

<div id="footer"  class="footer">
    <div id="footer_text" style="color:#ffffff">footer</div>
</div>
于 2013-06-12T10:02:55.103 回答
1

您不能使用页面上的所有事件。

如果您附加 mousedown、mouseup、click、touchstart 等。有很多组合。
我建议: - 实现设备/浏览器检测器 - 然后附加移动触摸和桌面点击事件

  • 您可以使用组合,但使用所有点击和一个触摸变体或所有触摸和一个经典桌面事件。

最佳组合: onClick 和一个 mousedown 或 mouseup 。如果您对某些功能有问题,请执行一些触摸事件。

您也可以像这样放置简单的代码:

<div onClick="CALL();" ontouchstart="CALL();" >

您可以在此答案中找到我的检测浏览器/设备脚本: 类似的问题-答案

于 2015-01-16T14:27:21.373 回答
0

您可以只选择虚拟鼠标 (vmouse) 绑定来下载自定义 Jquery 移动下载

在您的代码中包含此生成的 javascript 并使用代码片段。

$(document).on('vclick', '.popmenu', function(event){
// DO stuff
});

点击事件现在将在桌面/移动版本上使用预加载和动态内容class='popmenu'

于 2015-10-21T14:33:30.480 回答