.click()事件在Javascript中不适用于移动设备

.click()事件在Javascript中不适用于移动设备,javascript,mobile,dojo,dom-events,Javascript,Mobile,Dojo,Dom Events,我的代码有问题,我有一个隐藏的a href链接,一旦在图像中检测到单击,就会添加href值,并且该链接作为隐藏href的值传递。因此,一旦它在Javascript中单击图像,我将手动创建。单击隐藏的href标记,但它在手机中不起作用。我的代码如下: processGridClick : function(obj){ var objIndex = obj.getAttribute('data-item-number'); var docType = obj.getA

我的代码有问题,我有一个隐藏的a href链接,一旦在图像中检测到单击,就会添加href值,并且该链接作为隐藏href的值传递。因此,一旦它在Javascript中单击图像,我将手动创建。单击隐藏的href标记,但它在手机中不起作用。我的代码如下:

processGridClick : function(obj){
        var objIndex = obj.getAttribute('data-item-number');
        var docType = obj.getAttribute('data-doc-type');

        if(obj.className.indexOf('single') > -1){
            var documentURL = "";
            var documentsJsonRoot = DocumentsMgr.documentationData.documents[objIndex];
            if(docType == 'reportsList'){
                documentURL = documentsJsonRoot.reportsList[0].url;
            }else if(docType == 'attachmentList'){
                documentURL = documentsJsonRoot.attachmentList[0].url;
            }
            dojo.attr('linkDocumentsSingle', "href", documentURL);

            document.getElementById('linkDocumentsSingle').click();
        }

    }
视图是在JSON对象的基础上生成的一个表,它可以有多行,href的值在他们单击的图像的基础上传递。这适用于桌面,但在移动设备中。单击不起作用,我甚至尝试使用下面的代码将touchstart事件手动添加到所有可单击元素中,但仍然不起作用

    **(function(window){

    // check for touch
    if (Modernizr.touch) {

        // run the forEach on each figure element
        [].slice.call(document.querySelectorAll("figure")).forEach(function(el,i){

            // check if the user moves a finger
            var fingerMove = false;
            el.addEventListener("touchmove",function(e){
                e.stopPropagation();
                fingerMove = true;
            });

            // always reset fingerMove to false on touch start
            el.addEventListener("touchstart",function(e){
                e.stopPropagation();
                fingerMove = false;
            });

            // add hover class if figure touchend and fingerMove is false
            el.addEventListener("touchend",function(e){
                e.stopPropagation();
                if (fingerMove == false) {
                    classie.toggle(el,"hover");
                }
            });

        });

    }

})(window);**

这对手机有用吗?尝试模拟鼠标点击

var ele = document.getElementById('linkDocumentsSingle');
ele.dispatchEvent(new MouseEvent('mousedown'));
ele.dispatchEvent(new MouseEvent('mouseup'));
试着用这个

在i-phones中,只有锚定标签或按钮的点击事件。因此,对于image、div或span,必须使用tap事件

如果touchend在150毫秒内跟随touchstart,这将触发点击事件,当然,您可以调整。如果您所追求的只是一个点击事件,那么您可以尝试使用它来代替jQuery mobile


注意:为此,我检查了您包含的bootstrap js库

谢谢,没有手动考虑dispatchEvent,我只是使用了touchstart,而不是mousedown和up,因为我唯一的问题是移动设备无法工作。似乎对于a href标记,我需要手动添加事件。谢谢
// listen for a touchstart event
$('img').on('touchstart.tap',function (e) {

  // listen for a touchend event
  $(e.target).one('touchend.tap',function() {
    $(e.target).trigger('tap');
  });

  // cancel it in 150ms
  setTimeout(function () {
    $(e.target).off('touchend.tap');
  },150);
});