从WebView获取当前URL和标题

时间:2012-10-16 20:18:31

标签: xcode macos cocoa xcode4 webkit

我正在尝试从WebView获取当前的URL和标题。我已将此用作URL

- (void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame
{
    // Only report feedback for the main frame.
    if (frame == [sender mainFrame]){
        NSString *url = [[[[frame provisionalDataSource] request] URL] absoluteString];
        [addressBar setStringValue:url];
    }
}

这是标题:

- (void)webView:(WebView *)sender didReceiveTitle:(NSString *)title forFrame:(WebFrame *)frame
{
    // Report feedback only for the main frame.
    if (frame == [sender mainFrame]){
        [[sender window] setTitle:title];
    }
}

此代码直接来自Apple的WebKit Objective-C编程指南。我只是将URL方法略微修改为addressBar而不是textField。但它不起作用。 addressBar字段永远不会填充页面的URL,并且窗口标题不会更新ether。在界面构建器中正确连接所有内容。为什么它不起作用?

3 个答案:

答案 0 :(得分:0)

不幸的是,我自己也不知道。但我发现的是一个很棒的网站,其中有一个教程,其中一个是制作RSS源,并且它从RSS获取标题。如果向下滚动,你会看到它。希望你能修改它才能工作!!

http://www.raywenderlich.com/2636/how-to-make-a-simple-rss-reader-iphone-app-tutorial

答案 1 :(得分:0)

如果页面已经加载,那么它不是provisionaldatasource,请将其替换为

[[[[frame dataSource] request] URL] absoluteString];

答案 2 :(得分:0)

这是你得到这个工作。

  1. frameLoadDelegate对象设置WebView 。在您的可视界面中,从您的WebView元素控制拖动到包含NSWindow的{​​{1}}。松开鼠标时,会出现一个小黑色下拉菜单。选择WebView。完成此操作后,frameLoadDelegate等消息将发送到webView:DidReceiveTitle:forFrame的实例。
  2. NSWindow创建一个子类,并将您的NSWindow对象分配给此子类。由于这个新的子对象将继承NSWindow的所有内容,因此它将收到NSWindow消息。
  3. 将上面的代码粘贴到这个新的子类中。这有效地覆盖了父类的方法定义,并使您可以自动控制发生的情况。
  4. 希望有所帮助。

相关问题