How can I make event.srcElement work in Firefox and what does it mean?

后端 未结 3 915
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-11-27 04:23

there is an if statement on my company\'s website that makes one web page imcompatible with firefox

if(event.srcElement.getAttribute(\"onclick\") == null){ 
         


        
相关标签:
3条回答
  • 2020-11-27 05:05

    In IE the event object is available in the window object already; in Firefox, it's passed as a parameter in the event handler.

    Example

    JavaScript:

    function toDoOnKeyDown(evt)
    
    {
    
        //if window.event is equivalent as if thie browser is IE then the event object is in window
        //object and if the browser is FireFox then use the Argument evt
    
        var myEvent = ((window.event)?(event):(evt));
        //get the Element which this event is all about 
    
        var Element = ((window.event)?(event.srcElement):(evt.currentTarget));
        //To Do -->
    
    }
    

    HTML:

    <input type="text" id="txt_Name" onkeydown="toDoOnKeyDown(event);"/>
    

    As you notice when we called the function inside the html we have added a parameter event just in case the browser is Firefox.

    I have read in an article that the event object in IE is called window.event and in Firefox we have to put it as a parameter.

    In case you need it to be attached in the code:

    document.getElementById('txt_Name').onkeydown = function(evt) {
        var myEvent = ((window.event)?(window.event):(evt));
    
    
        // get the Element which this event is all about 
    
        var Element = ((window.event)?(event.srcElement):(evt.currentTarget));
        // To Do -->
    };
    
    0 讨论(0)
  • 2020-11-27 05:20

    Try quick fix as follows:

    Include in code:

    let target = event.target || event.srcElement;
    

    and change

    event.srcElement.XXXXX to target.XXXXX
    

    this solves the issue with Firefox.

    0 讨论(0)
  • 2020-11-27 05:23

    srcElement is proprietary property originally coming from IE. The standardized property is target:

    var target = event.target || event.srcElement;
    
    if(target.onclick == null) { // shorter than getAttribute('onclick')
        //...
        document.mainForm.submit();
    }
    

    Also have a look at quirksmode.org - Event properties for more cross browser information.


    Regarding the question what it is doing:

    event.target / event.srcElement contains a reference to the element the event was raised on. getAttribute('onclick') == null checks whether a click event handler is assigned to element via inline event handling.

    Is it important? We cannot say because we don't know what the ...code.. is doing.

    0 讨论(0)
提交回复
热议问题