【发布时间】:2017-01-14 19:11:07
【问题描述】:
我已经研究了几个解决这个问题的方法,但似乎没有解决这个问题。
我将在下面概述我为允许来自
参考 我使用 WKWebView 作为 Web 内容的包含浏览器。我设置了allowInlineMediaPlayback = true (WKWebViewConfiguration)。我还实现了以下一段我在网页上调用的 JavaScript,并成功地修改了视频标签的属性以包括“playsinline”“自动播放”。考虑无论网站开发人员有什么胡言乱语,或者没有进入那里,我都可以确定我需要的属性已添加到视频标签中。 (作为旁注,我认为 youtube 和其他人也让开发人员难以影响网站的行为方式(但如果他们这样做,用户体验会好得多))
反正代码>>
WKWebViewConfiguration *dx = [[WKWebViewConfiguration alloc] init];
dx.allowsInlineMediaPlayback = TRUE;
WKWebView * webview = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, cell.wv.bounds.size.width, cell.wv.bounds.size.height) configuration:dx];
[cell addSubview:webview];
webview.navigationDelegate = self;
webview.UIDelegate = self;
webview.frame = CGRectMake(0, 0, cell.wv.bounds.size.width, cell.wv.bounds.size.height);
[[webview scrollView] setBounces:NO];
webview.scrollView.scrollEnabled = NO;
NSURL *nsurl=[NSURL URLWithString:urlws[indexPath.row]];
NSURLRequest *request = [NSURLRequest requestWithURL:nsurl cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval: 60.0];
[webview loadRequest:request];
NSString *jsCallBack = @"var b = document.querySelector(\"video\"); b.setAttribute(\"webkit-playsinline\",\"\"); b.setAttribute(\"autoplay\",\"\"); b.setAttribute(\"muted\",\"\");";
[webView evaluateJavaScript:jsCallBack completionHandler:^(NSString *result, NSError *error)
{
NSLog(@"Error %@",error);
NSLog(@"Result %@",result);
然后我通过从 ios 调用这个 js 代码来开始播放
NSString *jsCallBack = @"var element = document.querySelector('[aria-label=\"Play\"]'); element.click();";
[webView evaluateJavaScript:jsCallBack completionHandler:^(NSString *result, NSError *error)
{
结果:
调用了播放函数并播放了视频,但用户被带入全屏播放,这是不应该发生的。 @IOS WebKit 很好,但需要更多的工作,我们需要一些更智能的 api,因为我认为现在很少有用户想要全屏观看视频。如果该设计将其转向全屏,那是很自然的,但否则它确实会带来糟糕的用户体验。
如果有人有任何想法,请告诉我。非常感谢
【问题讨论】:
标签: javascript ios video