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 未按预期工作

libgdx ScissorStack 未按预期工作

UICollectionViewLayout 未按预期工作

CollapsingToolbarLayout 未按预期工作

返回ObjectsAsFaults 未按预期工作