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 和其他插件?的主要内容,如果未能解决你的问题,请参考以下文章
用vscode开发react-native,为啥智能提示时有时无?
Android:OnClickListener 在初始加载时无响应?