diff --git a/main.js b/main.js index 3da5e9b..fe68e35 100644 --- a/main.js +++ b/main.js @@ -641,8 +641,19 @@ const LOGIN_PARTITION = 'persist:google-login'; function isGoogleLoginUrl(u) { try { - const h = new URL(u).hostname; - return h === 'accounts.google.com' || h.endsWith('.accounts.google.com'); + const url = new URL(u); + const h = url.hostname; + if (h !== 'accounts.google.com' && !h.endsWith('.accounts.google.com')) return false; + // YouTube (and other Google products) silently call window.open on + // accounts.google.com/...?passive=true&... when the page first loads to + // pick up an existing session via postMessage. That flow doesn't work in a + // top-level popup (no parent context → Google shows "JavaScript отключен"). + // Skip the popup for these — they only matter if the user happens to + // already be logged in elsewhere, which won't be the case on a fresh + // partition anyway. Active login (user clicks "Войти") never has + // passive=true, so it still routes through openLoginPopup. + if (url.searchParams.get('passive') === 'true') return false; + return true; } catch (_) { return false; } } diff --git a/package.json b/package.json index f661737..a98ba42 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ESH-Media", - "version": "1.0.11", + "version": "1.0.12", "private": true, "main": "main.js", "scripts": {