To all my fellow JavaScript experts I need your help. In my Flutter app, I used JavaScript, can anyone help me edit my JavaScript code? I can get the URL and print for every click, but I don’t want the video to play. Your help is highly appreciated.
Behavior needed for my Flutter app:
-
I need to get the link each time I select video from https://www.youtube.com/ but I don’t want the video to be played.
<code> void initState() {super.initState();webViewController = WebViewController()..setJavaScriptMode(JavaScriptMode.unrestricted)..addJavaScriptChannel('Toaster',onMessageReceived: (JavaScriptMessage message) {print('${message.message}');},)..setNavigationDelegate(NavigationDelegate(onPageFinished: (String url) {injectJavaScript();}))..loadRequest(Uri.parse('https://www.youtube.com'));}</code><code> void initState() { super.initState(); webViewController = WebViewController() ..setJavaScriptMode(JavaScriptMode.unrestricted) ..addJavaScriptChannel( 'Toaster', onMessageReceived: (JavaScriptMessage message) { print('${message.message}'); }, ) ..setNavigationDelegate(NavigationDelegate( onPageFinished: (String url) { injectJavaScript(); } )) ..loadRequest(Uri.parse('https://www.youtube.com'));} </code>void initState() { super.initState(); webViewController = WebViewController() ..setJavaScriptMode(JavaScriptMode.unrestricted) ..addJavaScriptChannel( 'Toaster', onMessageReceived: (JavaScriptMessage message) { print('${message.message}'); }, ) ..setNavigationDelegate(NavigationDelegate( onPageFinished: (String url) { injectJavaScript(); } )) ..loadRequest(Uri.parse('https://www.youtube.com'));}
}
<code> void injectJavaScript() {webViewController.runJavaScript('''(function() {function sendMessage(url) {Toaster.postMessage(url);}var videos = document.getElementsByTagName('video');var audios = document.getElementsByTagName('audio');for (var i = 0; i < videos.length; i++) {videos[i].muted = true;}for (var i = 0; i < audios.length; i++) {audios[i].muted = true;}var lastUrl = location.href;new MutationObserver(() => {var url = location.href;if (url !== lastUrl) {lastUrl = url;if (url.includes('/watch')) {sendMessage(url);}}}).observe(document, {subtree: true, childList: true});})();''');}</code><code> void injectJavaScript() { webViewController.runJavaScript(''' (function() { function sendMessage(url) { Toaster.postMessage(url); } var videos = document.getElementsByTagName('video'); var audios = document.getElementsByTagName('audio'); for (var i = 0; i < videos.length; i++) { videos[i].muted = true; } for (var i = 0; i < audios.length; i++) { audios[i].muted = true; } var lastUrl = location.href; new MutationObserver(() => { var url = location.href; if (url !== lastUrl) { lastUrl = url; if (url.includes('/watch')) { sendMessage(url); } } }).observe(document, {subtree: true, childList: true}); })(); ''');} </code>void injectJavaScript() { webViewController.runJavaScript(''' (function() { function sendMessage(url) { Toaster.postMessage(url); } var videos = document.getElementsByTagName('video'); var audios = document.getElementsByTagName('audio'); for (var i = 0; i < videos.length; i++) { videos[i].muted = true; } for (var i = 0; i < audios.length; i++) { audios[i].muted = true; } var lastUrl = location.href; new MutationObserver(() => { var url = location.href; if (url !== lastUrl) { lastUrl = url; if (url.includes('/watch')) { sendMessage(url); } } }).observe(document, {subtree: true, childList: true}); })(); ''');}