【问题标题】:why .click() doesn't work on android?为什么 .click() 在安卓上不起作用?
【发布时间】:2014-06-13 12:08:33
【问题描述】:

奇怪的情况:

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

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

它可以在网络浏览器上完美运行 - 即使在 WindowsPhone、iPhone/iPad 上也是如此。但在 android 上则不行。看起来 android 浏览器忽略了 .click() 函数。

为什么?以及如何解决?

【问题讨论】:

标签: javascript android jquery


【解决方案1】:

我认为你应该添加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');
}

【讨论】:

    【解决方案2】:

    我从来没有为安卓浏览器写过代码,但我首先研究了这些问题 警报以查看浏览器是否找到了该元素。

    试试:

    alert(document.getElementById("fileUploadHidden+" + id));

    看看它是[object]还是null。

    然后您可以检查是否是导致问题的 document.getElementById 或 click 方法。

    以下是一些相关主题:

    【讨论】:

      【解决方案3】:

      可能是浏览器问题。

      试试这个。

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          如果id名称是fileUploadHidden

          试试

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

          如果id名称是fileUploadHidden+

          试试

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

          【讨论】:

          • $('#fileUploadHidden+' + id).click() - 缺少#
          • @Anton Yes OP 告诉它不工作这就是为什么要检查 jquery
          • 两个代码是一样的。你不需要在 javascript 中使用#
          • 清除缓存? jQuery 版本应该在所有浏览器上都没有问题。
          • @SridharR 您还缺少fileUploadHidden 末尾的+,如果您想使用jQuery,您必须使用\\ 像这样$("#fileUploadHidden\\+"+id).click(); 转义+ 。但是document.getElementId('id')$('#id')是一样的
          猜你喜欢
          • 1970-01-01
          • 2020-08-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多