Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为android较低版本的设备在javascript和html中实现onclick?_Javascript_Android_Html_Onclick_Cordova - Fatal编程技术网

如何为android较低版本的设备在javascript和html中实现onclick?

如何为android较低版本的设备在javascript和html中实现onclick?,javascript,android,html,onclick,cordova,Javascript,Android,Html,Onclick,Cordova,我正在进行一个项目,该项目在更高版本的设备上运行良好,我已经在4.1.2版本中进行了检查 问题是,它在android版本2.2.1和2.3.5的设备上不起作用 我有六个图像,我已经添加了功能。2个图像的功能是使用id值调用不同的HTML页面。其他四个图像的功能也相同,但图像将基于数据库值显示 两个图像的功能是使用id值调用不同的HTML页面。 if(value_in_db==0) { document.getElementById("xyz").innerHTML = '<img sr

我正在进行一个项目,该项目在更高版本的设备上运行良好,我已经在4.1.2版本中进行了检查

问题是,它在android版本2.2.1和2.3.5的设备上不起作用

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

两个图像的功能是使用id值调用不同的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()"/> '
}
我就是这样编码的

<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
其他四个图像的功能也相同,但图像将根据数据库值显示。

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()"/> '
}
面临的问题:

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

我在CSS的位置上也遇到了类似的问题:修复了。android的较低版本不支持这一点。有人建议我提供一个解决方案

我已经尝试过了,但它对我无效。

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()"/> '
}
我希望我能找到解决这个问题的办法

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

编辑: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
文档是毫无根据的。addEventListener
。因为它在更高版本中起作用。我继续说。

这是非常基本的功能,应该适用于所有版本的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>

函数abc(){
window.location.href=“foo.html”;
}
索引页
您可以下载我的Eclipse测试项目和编译的APK,并在您的设备上进行尝试

根据您的JSFIDLE代码进行更新:

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

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

具有

2) 属性值应该被引用。将
替换为

3) 您有一个额外的结束div标记。替换

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

页脚


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

如果您附加鼠标向下、鼠标上、单击、touchstart等,则会有很多 组合。
我建议: -机具设备/浏览器检测器 -然后连接,用于移动触摸和桌面点击事件

  • 您可以使用组合,但可以使用“全部单击”和“仅一触式”变体或 所有触摸屏和一个经典桌面活动
最佳组合:onClick和一个mousedown或mouseup。然后实现 如果您的某些功能有问题,请选择一些触摸事件

您还可以将以下简单代码放入:

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

您可以在以下答案中找到我的检测浏览器/设备脚本:

您只需选择虚拟鼠标(vmouse)绑定即可下载

在代码中包含生成的javascript并使用代码段

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

单击事件现在将在桌面/移动版本上使用
class='popmenu'

预加载和动态内容,谢谢您的回复。拼命地等着。我正在使用cordova 2.1.0,因为我的sqlite插件支持该版本。当我发现这个问题时,我已经在测试阶段的fag末尾完成了整个项目。无论如何,我会测试它并让你知道结果。在项目的最后阶段发现这样的错误真的很烦人——我可以同情。如果此测试项目在您的设备上运行正常,请尝试将Cordova 2.1.0替换为2.8.0,看看是否仍然有效。我需要您的帮助,它与Cordova 2.8.0一起工作,令人惊讶的是,即使与Cordova 2.1.0一起工作,听起来可能是代码中的其他内容导致了问题。当您使用Eclipse在Android设备上运行应用程序时,当您尝试单击时,LogCat窗口中是否有任何错误?您的小提琴包含
而不是

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