Mac OS/WebView:为啥加载本地页面时无法使用 Flash 和其他插件?

Posted

技术标签:

【中文标题】Mac OS/WebView:为啥加载本地页面时无法使用 Flash 和其他插件?【英文标题】:Mac OS/WebView: Why Flash and other plugins are not available when a local page is loaded?Mac OS/WebView:为什么加载本地页面时无法使用 Flash 和其他插件? 【发布时间】:2011-08-16 20:15:49 【问题描述】:

我们正在开发适用于桌面 Mac 的 Objective C 应用程序。

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

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

从互联网加载页面时,Flash正常显示,并且有很多插件可用。

我的 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

【问题讨论】:

伙计们,求助,我们已经等了 2 周了,但没有一个回复。请问有人吗? 【参考方案1】:

您的插件和警报可能会阻止您链接的 js,螃蟹不会在您的 web 视图中运行。

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

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

【讨论】:

谢谢驱动,现在我有方向了。你能指出你用来测试我们的 HTML 的应用程序吗?我明天将更新我们的测试应用程序,将代码减少到最少。【参考方案2】:

好的,

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

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

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

约翰

【讨论】:

谢谢约翰,一定是这样。我已经针对 10.5 SDK 编译了测试。现在我正在等待我们的用户检查 Flash 是否在他的 Mac 上的测试中运行。我想知道为什么针对 10.6 SDK 构建会影响软件。如您所见,我们的目标操作系统版本是 10.5。保证在 10.5 上稳定运行还不够吗? 我刚收到我们用户的测试结果。有用!约翰,再次感谢您的帮助。唯一让我困惑的是为什么使用 SDK 10.6 和目标 OS 10.5 编译在 10.5.8 上不起作用我已经检查了你的答案! 很高兴能提供帮助,我对 xcode 不是很熟悉,我只是看了一下选项并试了一下......我相信你可以有多个 SDK 目标,但是如果您只指定最新的任何旧的都不会运行。【参考方案3】:

我在 Google 的“SketchUp”WebDialog 中运行它,Nib 文件的选项设置与您的完全相同。如果您不熟悉 SU,它有一个可用的 Ruby 控制台,您可以向其编写或提供 html 文件。免费版本和一点红宝石就足够了。 约翰

【讨论】:

嗨,约翰,非常感谢您的帮助。看来您是我们唯一的希望:)) 我做了一个非常简单的测试,请参阅问题的更新。如果你现在能看到螃蟹,请告诉我。

以上是关于Mac OS/WebView:为啥加载本地页面时无法使用 Flash 和其他插件?的主要内容,如果未能解决你的问题,请参考以下文章

在 Sailsjs 中使用本地护照时无响应

用vscode开发react-native,为啥智能提示时有时无?

Android:OnClickListener 在初始加载时无响应?

从lambda层加载时无服务器脱机未定义模块

wireshark为啥显示本地主机实际MAC地址而不是远程主机实际MAC地址

为啥此页面与移动浏览器不兼容?