dojo .click()事件在Javascript中不适用于移动的

svdrlsy4  于 2022-12-16  发布在  Dojo
关注(0)|答案(2)|浏览(198)

我有一个问题,我的代码,我有一个隐藏的一个href链接,该链接的href值被添加,一旦点击检测到图像和链接是作为一个值传递的隐藏的href。所以,一旦它点击图像在Javascript中,我正在手动.click()到隐藏的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的值是基于用户点击的图像传递的。这在桌面上很好用,但在移动的中.click不起作用,我甚至尝试用下面的代码手动添加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);**
w9apscun

w9apscun1#

这对移动的有用吗?试试模拟鼠标点击...?

var ele = document.getElementById('linkDocumentsSingle');
ele.dispatchEvent(new MouseEvent('mousedown'));
ele.dispatchEvent(new MouseEvent('mouseup'));
2w2cym1i

2w2cym1i2#

试试用这个
在iPhone中,只有锚标签或按钮才有点击事件,所以对于imagedivspan,你必须使用tap事件。

// 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);
});

如果touchend在touchstart之后150ms内(当然,您可以调整)触发tap事件,如果tap事件是您所追求的,您可以尝试使用它来代替jQuery移动的。
注意:为此我已经检查了你已经包括引导js库

相关问题