diff --git a/lib/features/iptv/screens/player_screen.dart b/lib/features/iptv/screens/player_screen.dart index d97b3ab..e57f5eb 100644 --- a/lib/features/iptv/screens/player_screen.dart +++ b/lib/features/iptv/screens/player_screen.dart @@ -217,10 +217,30 @@ class _PlayerScreenState extends ConsumerState { } void _sendMessage(Map message) { - if (_isInitialized) { - final iframe = - html.document.getElementById(_viewId) as html.IFrameElement?; - iframe?.contentWindow?.postMessage(message, '*'); + if (!_isInitialized) return; + + // Try finding by ID first + var iframe = html.document.getElementById(_viewId) as html.IFrameElement?; + + // If not found, try finding by src pattern (fallback for Shadow DOM or ID issues) + if (iframe == null) { + final iframes = html.document.getElementsByTagName('iframe'); + for (final frame in iframes) { + if (frame is html.IFrameElement && + (frame.src?.contains('player_lite.html') == true || + frame.src?.contains('player.html') == true)) { + iframe = frame; + break; + } + } + } + + if (iframe != null) { + print('[PlayerScreen] Sending message to iframe: $message'); + iframe.contentWindow?.postMessage(message, '*'); + } else { + print( + '[PlayerScreen] Error: Could not find iframe to send message: $message'); } } diff --git a/web/player_lite.html b/web/player_lite.html index c7866fc..7183120 100644 --- a/web/player_lite.html +++ b/web/player_lite.html @@ -476,6 +476,8 @@ const data = event.data; if (!data) return; + log('Received message from parent: ' + JSON.stringify(data)); + if (data.type === 'play') { video.play().catch(e => log('Play command failed: ' + e)); } else if (data.type === 'pause') {