触摸/点击和输入事件监听器无法触发iOS

时间:2019-08-03 01:07:48

标签: javascript ios ecmascript-6 addeventlistener

我有一个仅在iOS上不触发输入和触摸或单击监听器的应用程序。我已经看过这些问题(虽然只是个麻烦……我不是不是使用jQuery):

jQuery click events not working in iOS

jQuery on click not working on iPhone (touch devices)

How do I use jQuery for click event in iPhone web application

还有更多...我学到的是以下内容:

  1. 将光标指针添加到元素。 完成。我所有未触发的可点击元素均具有cursor:指针的CSS属性
  2. 内联Click侦听器。 尝试过,没有效果
  3. 种类相同...将onclick =“”添加到元素。 与上面相同,尝试了一下,没有效果
  4. 使用触摸监听器。 尝试过,没有任何效果。这是我将要展示的当前实现。

我知道并没有覆盖任何元素,因为我已经向元素添加了:active伪类,只是为了确保 正常工作,以及何时创建了clickable元素。积极地,他们做了CSS告诉他们的事情。这是我添加事件监听器的方法:

const interactionEvent = function () {
    const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
    return iOS ? 'touchstart' : 'click';
};
class SingleLeadInteraction {
    constructor() {
        const urlSearch = new URLSearchParams(window.location.search);
        this.leadId = urlSearch.get("id");
        this.addListeners();
    }
    addListeners() {
        this.addNoteButton.addEventListener(interactionEvent(), e => { SingleLeadInteraction.addNoteModal.showModal(); }, false);
        this.addAttachmentButton.addEventListener(interactionEvent(), e => { SingleLeadInteraction.addAttachmentModal.showModal(); }, false);
        this.changeAgentButton.addEventListener(interactionEvent(), () => { SingleLeadInteraction.changeAgentModal.showModal(); }, false);
        const leadDetailInputs = document.querySelectorAll(".field-container label input[data-api-name], .field-container label select[data-api-name]");
        leadDetailInputs.forEach(input => {
            input.addEventListener("input", e => {
                // code that isn't firing
            }, false);
        });
    }
}
SingleLeadInteraction.changeAgentModal = new Modal("#changeAgentModal");
SingleLeadInteraction.addNoteModal = new Modal("#addNoteModal");
SingleLeadInteraction.addAttachmentModal = new Modal("#addAttachmentModal");
let lead;
if (new URL(window.location.href).pathname === "/contact/") {
    lead = new SingleLeadInteraction();
}

我首先从仅使用“ interactionEvent()”调用所在的“点击”或“ touchstart”开始,所以我已经尝试过了。

我只是不知道该怎么办。

为什么我的iOS事件监听器无法触发?

1 个答案:

答案 0 :(得分:0)

添加光标:指针;到不可点击元素的CSS,可以使点击完全冒泡。

cursor: pointer;

感谢 link description here

https://gravitydept.com/blog/js-click-event-bubbling-on-ios