Webview/Webkit 未按预期工作
Posted
技术标签:
【中文标题】Webview/Webkit 未按预期工作【英文标题】:Webview/Webkit not working as expected 【发布时间】:2015-05-27 04:32:27 【问题描述】:这是我第一次在这里发帖。所以请多多包涵。我正在使用 Webkit 在 web 视图中显示来自 YouTube 的一些内容。
背景
操作系统:OS X 10.10.2 SDK:OS X 10.10问题
正如我之前所说,我使用 WebView 来显示来自 YouTube 的内容。但是,我遇到了一些我在下面概述的问题
当尝试使用 YouTube 的全屏操作时,会发生以下情况:
测试一(使用 Flash):
观察:
我做错了什么:当我尝试在 YouTube 网站上使用 Flash 播放器播放视频时,一切正常。 此外,当我单击 YouTube 视频的全屏按钮时,窗口确实以全屏显示。但是,它不是完全全屏的(菜单栏仍然可见)
我的预期:我预期视频会完全进入全屏模式。在 Safari 中一切正常。
测试二(使用 html5):
观察:
我做了什么:当我尝试在 YouTube 网站上使用 HTML5 播放器播放视频时,一切正常。但是,当我点击 YouTube 视频的全屏按钮时,什么也没发生。
我的预期:我预期视频会进入全屏模式。我确实注意到在 Safari 中执行此操作时一切正常。
有人可以帮我解决这个问题吗?我到处找,一无所获。
这是我为说明此问题所做的测试应用示例:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
// Insert code here to initialize your application
NSURL *url = [NSURL URLWithString:@"https://www.youtube.com"];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[[[self webView] mainFrame] loadRequest:urlRequest];
[self.window setContentView:self.webView];
//When YES WebView will use Flash if available, else will use HTML5
BOOL shouldUsePlugin = YES;
if (shouldUsePlugin == YES)
[[[self webView] preferences] setPlugInsEnabled:YES];
//Test 1: Using Flash
else
[[[self webView]preferences]setPlugInsEnabled:NO];
//Test 2: Using HTML5
【问题讨论】:
不幸的是,我没有解决这个特定问题的方法,但我从经验中知道“旧”WebView 类在 Web 插件(包括 Flash)方面存在重大问题。以下是我为 Apple 提供的两个重现案例,它们表明插件无法使用 WebView 正常工作:github.com/lemonmojo/WebViewPluginTestgithub.com/lemonmojo/WebViewJavaTest 现在我对您的建议是迁移到新的 WKWebView (developer.apple.com/library/ios/documentation/WebKit/Reference/…),它可以更好地处理插件并且通常更适合未来。 【参考方案1】:对于那些使用较新的 WebKit API (WKWebView
) 的用户,请在此处查看我的答案:WKWebView Mac Browser Enable fullscreen html5? 用于在 HTML5 内容上启用全屏
【讨论】:
【参考方案2】:只需使用他们的 youtube 播放器框架。他们为此准备了豆荚。
pod 'YouTubePlayer'
你只需要加载、播放、停止、清除。你的工作就完成了
【讨论】:
以上是关于Webview/Webkit 未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章
navigationController?.navigationBar.isUserInteractionEnabled 未按预期工作