From f694caa39754d94cd2b026382165e2ed82cdf4c0 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 22 May 2026 21:25:26 +0200 Subject: [PATCH] fix: poll iframe for canvas instead of load event for accurate Nitro ready detection --- .../themes/atom/views/client/nitro.blade.php | 16 +++++++++++----- .../themes/dusk/views/client/nitro.blade.php | 16 +++++++++++----- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/resources/themes/atom/views/client/nitro.blade.php b/resources/themes/atom/views/client/nitro.blade.php index ce6e2cd..367cf47 100755 --- a/resources/themes/atom/views/client/nitro.blade.php +++ b/resources/themes/atom/views/client/nitro.blade.php @@ -807,11 +807,17 @@ } } if (iframe) { - iframe.addEventListener('load', function() { - var elapsed = Date.now() - startTime; - var minWait = Math.max(0, 4500 - elapsed); - setTimeout(hideOverlay, minWait); - }); + var poll = setInterval(function() { + try { + var doc = iframe.contentDocument || iframe.contentWindow?.document; + if (doc && doc.querySelector('canvas')) { + clearInterval(poll); + var elapsed = Date.now() - startTime; + var minWait = Math.max(0, 3000 - elapsed); + setTimeout(hideOverlay, minWait); + } + } catch(e) {} + }, 200); } setTimeout(hideOverlay, 15000); })(); diff --git a/resources/themes/dusk/views/client/nitro.blade.php b/resources/themes/dusk/views/client/nitro.blade.php index fb6c263..ea6957d 100755 --- a/resources/themes/dusk/views/client/nitro.blade.php +++ b/resources/themes/dusk/views/client/nitro.blade.php @@ -668,11 +668,17 @@ } } if (iframe) { - iframe.addEventListener('load', function() { - var elapsed = Date.now() - startTime; - var minWait = Math.max(0, 4500 - elapsed); - setTimeout(hideOverlay, minWait); - }); + var poll = setInterval(function() { + try { + var doc = iframe.contentDocument || iframe.contentWindow?.document; + if (doc && doc.querySelector('canvas')) { + clearInterval(poll); + var elapsed = Date.now() - startTime; + var minWait = Math.max(0, 3000 - elapsed); + setTimeout(hideOverlay, minWait); + } + } catch(e) {} + }, 200); } setTimeout(hideOverlay, 15000); })();