我创建了一个链接并以编程方式单击它:
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中创建的自己的点击事件也会被阻止。
如何让点击事件通过?
答案 0 :(得分:3)
我的情况是在元素上设置属性data-tap-disabled =“true”。
答案 1 :(得分:1)
我知道这个问题很旧,但仍然想添加我的答案。 就我而言,我尝试将CSV文件保存为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线程。