Mac OS / WebView:为什么加载本地页面时Flash和其他插件不可用?

时间:2011-05-02 08:47:28

标签: flash macos webview

我们正致力于桌面Mac的Objective C应用程序。

我们使用WebView组件来显示HTML页面。

从本地文件系统加载页面时,页面上不显示Flash影片。 事实证明,问题并不完全与Flash有关。 大多数WebView插件都丢失了。

WebView plugins - local page is opened from the hard drive

从Internet加载页面时,Flash会正常显示,并且有许多插件可用。

WebView plugins - page is opened from the web

我的Mac上没有出现此问题,但30%的客户会遇到此问题。 它在MacBook(不是MacBook air)上再现,Mac OS版本是10.5.8。

伙计们,请帮助我们,我不知道如何解决这个问题。 这是妨碍我们发布产品的唯一障碍。

为什么在加载本地页面时WebView插件不可用?

可能是问题的根源 - Safari配置,Mac安全设置,某些软件安装?

如何在Mac上重现问题?

这是我们用于本地页面加载的WebView初始化代码。

IBOutlet WebView* webView;
...

[[webView preferences] setPlugInsEnabled:YES];    
WebFrame *mainFrame = [webView mainFrame];

NSString* path = [NSString stringWithFormat:@"%@/page.html",[[NSBundle mainBundle] resourcePath]];
NSURL* url = [NSURL fileURLWithPath:path];  

NSURLRequest *request = [NSURLRequest requestWithURL:url];
   [mainFrame loadRequest:request];

您是否注意到任何缺陷?

更新1

Test application

Source code

更新2

最小的测试,我只留下了打开本地页面所需的代码。 没有显示诊断窗口。 Test application, simple

简单测试的Application Delegate的完整源代码

#import "WebViewAppDelegate.h"

#import <WebKit/WebView.h>
#import <WebKit/WebFrame.h>

@implementation WebViewAppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    [[webView preferences] setPlugInsEnabled:YES];

    WebFrame *mainFrame = [webView mainFrame];
    NSString* path = [NSString stringWithFormat:@"%@/page.html",[[NSBundle mainBundle] resourcePath]];
    NSURL* url = [NSURL fileURLWithPath:path];  

    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [mainFrame loadRequest:request];

}

@end

3 个答案:

答案 0 :(得分:2)

您的插件和提醒可能会阻止您关联的js,螃蟹不会在您的网页浏览中运行。

我可以通过指向包内容中的html文件来运行另一个应用程序webview中的swf,并且没有启用任何“插件”。

您可以尝试将WebKitDeveloperExtras booleen true添加到您的prefs文件中,以便您可以使用webinspector进行检查。

答案 1 :(得分:1)

我在Google的“SketchUp”WebDialog中运行它,Nib文件具有与您相同的精确选项设置。如果您不熟悉SU,它可以使用Ruby控制台,您可以编写或提供html文件。免费版和一点红宝石就是所需要的。 约翰

答案 2 :(得分:1)

确定,

从下载运行v2失败,我仍然得到插件警报,没有螃蟹

所以我重建了xcode项目并将10.5作为目标,然后手动将html和swf移动到内容中,并报告所有的safari插件并在10.5.8上运行

所以虽然你的plist说10.5 [min]你的sdk目标是10.6,所以它不会在10.5上运行

约翰