为什么.click()不能在android上运行?

时间:2014-06-13 12:08:33

标签: javascript android jquery

奇怪的情况:

在我的plugins.js文件中我有这个简单的功能:

 function getFile(id) {
     document.getElementById("fileUploadHidden+" + id).click();
 }

它完美适用于网络浏览器 - 甚至在WindowsPhone,iPhone / iPad上......但不适用于Android。看起来android浏览器会忽略.click()功能。

为什么呢?以及如何解决它?

5 个答案:

答案 0 :(得分:3)

我认为你应该添加touchstart

var isMobile = {
   Android: function() {
      return /Android/i.test(navigator.userAgent);
   },
   BlackBerry: function() {
      return /BlackBerry/i.test(navigator.userAgent);
   },
   iOS: function() {
      return /iPhone|iPad|iPod/i.test(navigator.userAgent);
   },
   Windows: function() {
      return /IEMobile/i.test(navigator.userAgent);
   },
   any: function() {
      return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Windows());
   }
};

if(isMobile.any){
   document.getElementById("fileUploadHidden+" + id).trigger('touchstart');
}else{
   document.getElementById("fileUploadHidden+" + id).trigger('click');
}

答案 1 :(得分:0)

如果ID名称为fileUploadHidden

尝试

$("#fileUploadHidden" + id).click();

如果ID名称为fileUploadHidden+

尝试

$("#fileUploadHidden\\+"+id).click();

答案 2 :(得分:0)

我从未为Android浏览器编码,但我首先研究这些问题 警告以查看浏览器是否找到该元素。

尝试:

alert(document.getElementById(“fileUploadHidden +”+ id));

并查看它是[object]还是null。

然后你可以检查它是document.getElementById还是产生问题的click方法。

以下是一些相关主题:

答案 3 :(得分:0)

它可能是一个浏览器问题。

试试这个。

var elem = document.getElementById("fileUploadHidden+" + id);
if (elem.onclick) {
   elem.onclick();
} else if (elem.click) {
   elem.click();
}

答案 4 :(得分:0)

在我的小经验中,我用一个名为zepto.js的库解决了点击/点击问题,基本上是一个支持sreen事件的轻量级jquery库 http://zeptojs.com/

问题是点击和点击不完全相同,系统可以在不同的模式下处理它。 Zepto有一个方法tap(),可能是你的解决方案。 你可以看到手势方法 http://zeptojs.com/#modules