Bug 257450

Summary: document.focus or window onblur not trigger util a mouse move or click user gesture happened when an url-scheme launch dialog shows
Product: WebKit Reporter: Jeason Xu <jeason.xu93>
Component: DOMAssignee: Nobody <webkit-unassigned>
Status: NEW    
Severity: Normal CC: webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: Safari 16   
Hardware: Unspecified   
OS: Unspecified   

Jeason Xu
Reported 2023-05-29 02:33:14 PDT
When launch an url scheme on safari, safari shows a lauch dialog. This dialog should take back focus from document, but when I console "document.hasFocus()", this value still be true. Util I move my mouse, this value changes. I use "document.hasFocus()" changes when lauch a application by url scheme to detect if an application is installed or not. This works in other browser.
Attachments
Jeason Xu
Comment 1 2023-05-29 02:39:04 PDT
Here is demo code: const launchSharingApp = (urlScheme) => { if (!urlScheme) return; const frameId = 'url-scheme-frame-id'; let tempIframe = document.getElementById(frameId); if (!tempIframe) { tempIframe = document.createElement('iframe'); tempIframe.id = frameId; tempIframe.style.display = 'none'; document.body.appendChild(tempIframe); } tempIframe.contentWindow.location.href = urlScheme; setTimeout(() => { if (!document.hasFocus()) { /** if lost focus very fast, it means broswer's own confirm dialog shows. * User has no chance to touch other app */ console.log('app installed'); } }, 50); }; launchSharingApp('...')
Radar WebKit Bug Importer
Comment 2 2023-06-05 02:34:16 PDT
Note You need to log in before you can comment on or make changes to this bug.