5

I'm using the latest version of Chrome on two machines; one Windows 7 and another Windows 8.1. One has a number of extensions included, but the other has zilch.


Whenever I vote to "Delete" in the Low Quality Posts queue, the vertical scroll bar will be unclickable when the next (and all future) posts load. If I click any other action (e.g. "Skip"), this problem does not occur.

I can still use my spacebar and arrow keys on the keyboard to move the page up and down, but the scroll bar won't let me click to drag, nor can I click the arrows at the top and bottom of the scroll bar to move it.

enter image description here


I've not seen this behaviour in other browsers (but I couldn't say I use them that often), and only seen this behaviour on this page (out of the wholllllle Internet).

  • 1
    Reproduced; no idea what's going on here though. – Shog9 Jun 4 '14 at 17:01
  • 1
    @Shog9: That makes two of us. If I'd come across a question on Stack Overflow asking how to disable clicking on the scroll bar, but allow scrolling via the keyboard, I'd tell them it wasn't possible :P. – Matt Jun 4 '14 at 17:31
  • 1
    @Shog9: Looks like actually voting to delete a post is not required: just bringing up the dialog is enough. Also, while the dialog is open, clicking the scroll bar closes the dialog. I suspect there's a stray event handler that isn't being properly cleaned up. – Ilmari Karonen Jun 13 '14 at 12:51
4

Fix rolling out in build rev 2014.6.13.2312 on meta and 2014.6.13.1659 on sites.

| improve this answer | |
5

Aha! I found the bug!

It's in review.en.js, lines 4415–4417, in the function deleteClosePopup(), which looks like this:

function deleteClosePopup($popup) {
    $popup.fadeOutAndRemove();
    $('.review-actions input').removeAttr('disabled');

    $(document).off("mousedown", { parent: $popup }, deleteOnMouseDown);
    $(document).off("click", '.popup-close, .popup-actions-cancel', { parent: $popup }, deleteOnClick);
    $(document).off("keyup", { parent: $popup }, deleteOnKeyUp);
}

when it should look like this:

function deleteClosePopup($popup) {
    $popup.fadeOutAndRemove();
    $('.review-actions input').removeAttr('disabled');

    $(document).off("mousedown", deleteOnMouseDown);
    $(document).off("click", '.popup-close, .popup-actions-cancel', deleteOnClick);
    $(document).off("keyup", deleteOnKeyUp);
}

That is, the { parent: $popup } parameter should not be passed to the jQuery .off() method.

Specifically, the extra parameter causes .off() to silently fail, leaving the deleteOnMouseDown event handler to swallow all mousedown events that propagate down to the document object. On Chrome, that apparently includes any mousedown events on the scroll bar, making it unclickable.

| improve this answer | |
  • 1
    That is some incredible detective work there Sherlock! – Matt Jun 13 '14 at 16:27

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .