OS X Sleep: Hibernate or one eye open. Why I listen to the BBC at work…
Apr 24

Safari Issue: Cascading of mouse events and why input type=”submit” wasn’t working

JavaScript, Tech Add comments

For some reason the submit button on a search widget wasn’t submitting under Safari. It works totally fine in the other browsers, but Safari? nothing.

Hmm. The onsubmit event wasn’t even getting called. You click the button, and nothing.

Is it one of the annoying bugs to do with naming the submit button or something lame like that?

Nope, this one turned out to be due to an event handler placed on the body element:

document.getElementsByTagName(”body”).item(0).onclick = function() {}

Safari would take this click and call this function, and wouldn’t run the click event that the submit button has intrinsically.

Of course, the line of code above didn’t actually exist, it was created via the myriad of JavaScript libraries that this web application was using.

5 Responses to “Safari Issue: Cascading of mouse events and why input type=”submit” wasn’t working”

  1. Sam Pullara Says:

    So what’s the correct behavior? Should handled events be cascaded to underlying components? I kinda doubt it in general, maybe this is some sort of workaround?

  2. verda Says:

    I am writing this in July 2008. Has no one figured a solution for this problem yet? I encountered it today on the latest version of Safari and need to fix it ASAP!

  3. Maris Says:

    I found one more bug according mouse events and submit button (and also button element similar).

    Problem is about mouse position detection, if you attach onclick event which detects mouse position to the input=submit element, then y coordinate is incorect, nothing similar if you do this for example with div onclick event.

    function mouseCoordinates(e) {
    var pos_1=pos_2=0;
    if (!e)
    var e=window.event;

    if (e.pageX || e.pageY) {
    pos_1=e.pageX;
    pos_2=e.pageY;
    } else if (e.clientX || e.clientY) {
    pos_1=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;
    pos_2=e.clientY+document.body.scrollTop+document.documentElement.scrollTop;
    }

    return [pos_1, pos_2];
    }

  4. Michael Says:

    I was struggling with a similar problem with onSubmit and Safari — worked fine in PC browsers, essentially submitting text into its own javascript environment — but not in Safari, where it would perform its task, and then go on to reload the page, which I didn’t want it to do. Also very odd results in Opera on the Mac.

    I realized that I hadn’t added “return=false;” to the javascript onSubmit:

    <form onSubmit=”ExtraText(); return false;”….

    Problem solved, for me. As a friend said, “different levels of prissiness in browsers.”

  5. joi Says:

    Struggling with submit button in Safari. though working fine in other browsers.
    Code as follows in jsp:

    Kindly give me the the code so that i can try in safari

Leave a Reply

Spam is a pain, I am sorry to have to do this to you, but can you answer the question below?

Q: Type in the word 'cricket'