如何为android较低版本的设备在javascript和html中实现onclick?
我正在进行一个项目,该项目在更高版本的设备上运行良好,我已经在4.1.2版本中进行了检查 问题是,它在android版本2.2.1和2.3.5的设备上不起作用 我有六个图像,我已经添加了功能。2个图像的功能是使用id值调用不同的HTML页面。其他四个图像的功能也相同,但图像将基于数据库值显示 两个图像的功能是使用id值调用不同的HTML页面。如何为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
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等,则会有很多
组合。我建议: -机具设备/浏览器检测器 -然后连接,用于移动触摸和桌面点击事件
- 您可以使用组合,但可以使用“全部单击”和“仅一触式”变体或 所有触摸屏和一个经典桌面活动
<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
});