jQuery .click() works on every browser but Safari

后端 未结 4 819
我在风中等你
我在风中等你 2020-12-05 02:09

I have a piece of JavaScript that dynamically creates an A tag inside of an existing div and then calls the jQuery function \"click\" on it. This works as inten

4条回答
  •  误落风尘
    2020-12-05 03:00

    Trevor Dixon's answer does fix Safari, but breaks in even the latest Firefox:

    TypeError: Not enough arguments to MouseEvent.initMouseEvent

    The best way to support Safari—without breaking Firefox—would be using initEvent instead of initMouseEvent like so:

    var element = document.getElementById('your_id_here');
    if(element.click)
        element.click();
    else if(document.createEvent)
    {
        var eventObj = document.createEvent('MouseEvents');
        eventObj.initEvent('click',true,true);
        element.dispatchEvent(eventObj);
    }
    

    To update for 2016, MouseEvent should be used instead of initMouseEvent which is deprecated:

    var eventObj = new MouseEvent("click", {
        bubbles: true,
        cancelable: true
    });
    element.dispatchEvent(eventObj);
    

提交回复
热议问题