在Leopard中显示WebView中的内容时出现问题

时间:2010-07-21 11:54:35

标签: cocoa webview

我制作了一个示例应用程序,包括:WebView(显示URL的内容),textfield(包含URL),按钮(在WebView中加载URL)。

我使用此方法在WebView中显示内容:

- (IBAction)displayAction:(id)sender{
    NSString *liveStreamLink = [[NSString alloc] initWithString:[livestreamLinkTextField stringValue]];
    [[livestreamDisplayView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:liveStreamLink]]];
}

我在Leopard和Snow Leopard中制作了这个应用程序。

正常链接(例如 - https://stackoverflow.com/)在两个应用程序中都正确打开,但是当我尝试使用诸如 - http://www.xyz.com/tools/gauges/livestream.php?data=123456之类的链接时(注意:此链接返回图形),在应用程序开发中在豹子,它导致崩溃。 Snow Leopard开发的应用程序适用于所有类型的链接。

任何人都可以告诉我它可能是什么原因以及解决它的一些解决方案?

堆栈跟踪如下:

0   0x928252e6 in Debugger
1   0x1b7e8c15 in dyld_stub_sprintf
2   0x1b7e8ecf in NP_Initialize
3   0x90f0599f in -[WebNetscapePluginPackage _tryLoad]
4   0x90f054d7 in -[WebNetscapePluginPackage load]
5   0x90f0a8af in -[WebNetscapePluginDocumentView initWithFrame:pluginPackage:URL:baseURL:MIMEType:attributeKeys:attributeValues:loadManually:element:]
6   0x90ef41da in WebFrameLoaderClient::createPlugin
7   0x930bd908 in WebCore::FrameLoader::loadPlugin
8   0x936ae0da in WebCore::FrameLoader::requestObject
9   0x930bc409 in WebCore::RenderEmbeddedObject::updateWidget
10  0x92f32e65 in WebCore::FrameView::updateWidgets
11  0x92f329c1 in WebCore::FrameView::performPostLayoutTasks
12  0x92f22e33 in WebCore::FrameView::layout
13  0x9306f72b in WebCore::Timer<WebCore::FrameView>::fired
14  0x92f9e94e in WebCore::ThreadTimers::sharedTimerFiredInternal
15  0x92f9e822 in WebCore::ThreadTimers::sharedTimerFired
16  0x93860624 in WebCore::timerFired
17  0x9621a70b in __CFRunLoopRun
18  0x96218094 in CFRunLoopRunSpecific
19  0x96217ec1 in CFRunLoopRunInMode
20  0x96e48f9c in RunCurrentEventLoopInMode
21  0x96e48d51 in ReceiveNextEventCommon
22  0x96e48bd6 in BlockUntilNextEventMatchingListInMode
23  0x902b0a89 in _DPSNextEvent
24  0x902b02ca in -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
25  0x9027255b in -[NSApplication run]
26  0x9026a5ed in NSApplicationMain
27  0x000029ee in start at ESTableView.m:1278

2 个答案:

答案 0 :(得分:0)

我猜想这不是你的错,而是早期版本的WebKit的错。猜测的原因是什么?

  1. 它适用于Snow Leopard但不适用于Leopard。

  2. 崩溃完全在WebCore中,而不是您的代码。

  3. 第3,4行和第4行5显示WebCore正在为你正在加载的URL实例化一个插件,这就是崩溃似乎正在发生的地方。

  4. Snow Leopard中包含的WebKit以不同的方式处理插件(隔离它们,因此它们的崩溃不会影响整个事情)但是这种额外的注意力不是Leopard中WebKit的一部分。

答案 1 :(得分:0)

我发现每当它崩溃时它都会显示msg:Debugger()被调用。所以我检查了Xcode运行设置,发现 - 选择了Stop on Debugger()/ DebugStr()。当我取消选择它并重新执行应用程序时,它工作并没有崩溃。

任何人都可以验证关闭:在Debugger()/ DebugStr()上停止,不会造成任何麻烦吗?

谢谢,

莫瑙伊