diff --git a/src/General/css/style.css b/src/General/css/style.css index 71520f656..53ba9b9fd 100755 --- a/src/General/css/style.css +++ b/src/General/css/style.css @@ -1331,9 +1331,19 @@ input.field.tripped:not(:hover):not(:focus) { #qr .captcha-root { position: relative; } -#qr .captcha-container > div > div { +#qr .captcha-container > div { margin: auto; } +/* scrollable with scroll bar hidden; prevents scroll on space press */ +:root.blink #qr .captcha-container > div { + width: 304px; + overflow: hidden; +} +:root.blink #qr .captcha-container > div > div:first-of-type { + overflow-y: scroll; + overflow-x: hidden; + padding-right: 15px; +} #qr .captcha-counter { display: block; width: 100%; diff --git a/src/Posting/Captcha.v2.coffee b/src/Posting/Captcha.v2.coffee index 9c8102978..0a0a047be 100644 --- a/src/Posting/Captcha.v2.coffee +++ b/src/Posting/Captcha.v2.coffee @@ -241,9 +241,6 @@ Captcha.v2 = if $ 'iframe[src^="https://www.google.com/recaptcha/api2/frame"]', node new MutationObserver(@fixBubble.bind(@, node)).observe node, attributes: true - # Prevent Recaptcha from keeping focus when popup dismissed. - if overlay = $ 'div[style*="position: fixed;"]', node - $.on overlay, 'click', -> $('#qr iframe')?.blur() fixBubble: (node) -> {bottom, right, width} = node.getBoundingClientRect() diff --git a/src/Posting/QR.coffee b/src/Posting/QR.coffee index cf37cf8ca..2f7902038 100644 --- a/src/Posting/QR.coffee +++ b/src/Posting/QR.coffee @@ -153,28 +153,12 @@ QR = unless QR.inBubble() QR.hasFocus = d.activeElement and QR.nodes.el.contains(d.activeElement) QR.nodes.el.classList.toggle 'focus', QR.hasFocus - # XXX Stop unwanted scrolling due to captcha. - if QR.captcha.isEnabled and QR.captcha is Captcha.v2 and !QR.captcha.noscript - if QR.inCaptcha() - QR.scrollY = window.scrollY - $.on d, 'scroll', QR.scrollLock - else - $.off d, 'scroll', QR.scrollLock inBubble: -> bubbles = $$ 'iframe[src^="https://www.google.com/recaptcha/api2/frame"]' d.activeElement in bubbles or bubbles.some (el) -> getComputedStyle(el).visibility isnt 'hidden' and el.getBoundingClientRect().bottom > 0 - inCaptcha: -> - (d.activeElement?.nodeName is 'IFRAME' and QR.nodes.el.contains(d.activeElement)) or (QR.hasFocus and QR.inBubble()) - - scrollLock: -> - if QR.inCaptcha() - window.scroll window.scrollX, QR.scrollY - else - $.off d, 'scroll', QR.scrollLock - hide: -> d.activeElement.blur() $.addClass QR.nodes.el, 'autohide'