离子:如何让我的点击事件通过

时间:2015-11-05 04:14:07

标签: javascript click ionic-framework ionic

我创建了一个链接并以编程方式单击它:

var a = document.createElement("a");
a.download = "mymap.png";
a.href = canvasdata;
document.body.appendChild(a);
a.click();

上面的代码块通常会成功触发一次点击,但由于ionic.bundle.js中的这个功能,它会被离子点击事件处理系统阻止:

function tapClickGateKeeper(e) {
    ...
    // do not allow through any click events that were not created by ionic.tap
    if ((ionic.scroll.isScrolling && ionic.tap.containsOrIsTextInput(e.target)) ||
(!e.isIonicTap && !ionic.tap.requiresNativeClick(e.target))) {
//console.log('clickPrevent', e.target.tagName);
        e.stopPropagation();

        if (!ionic.tap.isLabelWithTextInput(e.target)) {
         // labels clicks from native should not preventDefault othersize keyboard will not show on input focus
          e.preventDefault();
        }
    return false;
    }
}

如果没有将isIonicTap设置为true,则此函数不会通过click事件。因此,我在Javascript中创建的自己的点击事件也会被阻止。

如何让点击事件通过?

2 个答案:

答案 0 :(得分:3)

我的情况是在元素上设置属性data-tap-disabled =“true”。

答案 1 :(得分:1)

我知道这个问题很旧,但仍然想添加我的答案。 就我而言,我尝试将CS​​V文件保存为ionic App。 所以这段代码行得通:

a['type'] = 'submit' ;

document.body.appendChild(link);
var e1 = document.createEvent('MouseEvents');
e1.initEvent('mousedown', true, true);
a.dispatchEvent(e1);

var e2 = document.createEvent('MouseEvents');
e2.initEvent('click', true, true);
a.dispatchEvent(e2);

document.body.removeChild(link);

此代码基于iOnic论坛上的this线程。