iOS WKWebView加载带有音频、视频的网页,页面返回后仍在后台播放声音问题。

如果在WKWebView页面里加载B站的视频,但是从页面返回到上级页面,后台还在播放声音。

方案一:

在页面的viewWillDisappear方法里加入如下代码:

  [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];

如果上一个页面是viewController是没有问题的,但是上一个页面也是webview的话会导致页面空白。

方案二:

首先在初始化 webview 前先注入网页停止播放音乐的 js 代码。

//js代码

NSString *videos = @"document.getElementsByTagName('video');function pauseVideo(){var len = videos.length;for(var i=0;i

WKUserScript *pauseJS = [[WKUserScript alloc]initWithSource:videos injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];WKUserContentController *userContent = [[WKUserContentController alloc]init];[userContent addUserScript:pauseJS];config.userContentController = userContent;

然后在页面的viewWillDisappear方法里加入如下代码:

[_webView evaluateJavaScript:@"pauseVideo()"completionHandler:nil];

[_webView evaluateJavaScript:@"pauseAudio()"completionHandler:nil];

但是对于我来说没用,还是会有声音。也不排除可能每个人的页面功能代码都不同,可能会好使,大家可以参考原文链接:https://blog.csdn.net/LeveBe/article/details/105996359

方案三:

在页面的viewWillDisappear方法里,也是js注入的方式,这种方式自测好用!!!

  [_webView evaluateJavaScript:@"var videos = document.getElementsByTagName('video');\

           for (var i=0;i < videos.length;i++){\

           videos[i].pause();\

           }"completionHandler:^(id_Nullableobj,NSError*_Nullableerror) {

            NSLog(@"executeJsFunctionError -->%@",error) ;

           }];

你可能感兴趣的:(iOS WKWebView加载带有音频、视频的网页,页面返回后仍在后台播放声音问题。)