美文网首页零碎知识点iOS开发牛叉的demo
关于 iOS 的 WebView 播放视频/音频无法停止的解决方

关于 iOS 的 WebView 播放视频/音频无法停止的解决方

作者: DreamBuddy | 来源:发表于2017-06-28 16:37 被阅读115次

    当我们的WebView不显示在最高层的时候,例如push了一个新的ViewController或者pop掉了当前的ViewController以后,常常我们需要停止音视频的播放~
    比较常见的方法,在需要停止的时候通过webview加载一个空页面来达到停止播放的效果,代码如下:

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

    这种方法简单干脆直接了事,在popViewController/dismissViewController的时候很爽,好使,但是当pushViewController/presentViewController以后再返回webview就是一个大白屏了~

    所以我们有了更好的解决方案 先上代码解解馋:

    // 停止视频播放
    [webview stringByEvaluatingJavaScriptFromString:
         @"var videos = document.getElementsByTagName('video');\
         for (var i=0;i < videos.length;i++){\
             videos[i].pause();\
         }"];
    // 停止音频播放
    [webview stringByEvaluatingJavaScriptFromString:
         @"var audios = document.getElementsByTagName('media');\
         for (var i=0;i < audios.length;i++){\
             audios[i].pause();\
         }"];
    

    原理:通过JS直接控制网页中的 video/media标签
    好了,至此结束~

    相关文章

      网友评论

      • 2d820ce2f220:怎么获取done按钮呢?或者说,怎么操作done按钮?
        DreamBuddy:@泽栓Johnson 完事。。哈哈
        2d820ce2f220:@DreamBuddy代码设计师 webView调用的系统播放器,Done按钮的id,获取不到吧...主要想在网络状态切换的时候弹窗提示,发现系统弹窗会被遮挡住,只有按了done之后才会出来;后面想了想,自己自定义个弹窗显示在Window上面完事...
        DreamBuddy:@泽栓Johnson 网页里边的按钮 那就要根据id什么的来获取?

      本文标题:关于 iOS 的 WebView 播放视频/音频无法停止的解决方

      本文链接:https://www.haomeiwen.com/subject/ssvucxtx.html