我有一个嵌入式WebView
的Cocoa应用。我已经设置了我的委托来响应可以从JavaScript调用的一些自定义Objective-C函数。例如,在JavaScript中,我可以调用类似console.log()
我按如下方式设置代理:
- (void)webView:(WebView *)sender didClearWindowObject:(WebScriptObject *)windowObject forFrame:(WebFrame *)frame {
[self.webView.windowScriptObject setValue:self forKey:@"console"];
}
现在当我导航到另一个页面然后使用后退按钮(通过WebView goBack:
)时,上面的方法没有被调用,我无法设置console
对象。
但是,JavaScript对象仍然存在(typeof(console)
返回object
),但调用它上面的任何函数都没有任何效果。
首先,有人知道调用didClearWindowObject:
时未调用goBack:
的原因吗?有关如何调试JavaScript对象的任何建议吗?