我正在尝试检索网页的标题并将其显示在NSWindows标题中。这个应用程序是基于文档的,我没有在AppDelegate的独立应用程序中尝试过任何东西。我将如何前往检索标题并在窗口中显示?
更新:这是我的代码(注意:还不行)
TitleWindow.h
#import <Cocoa/Cocoa.h>
#import <WebKit/WebKit.h>
@interface TitleWindow : NSWindow <NSApplicationDelegate> {
}
@property
(retain, nonatomic) IBOutlet NSWindow *displayTitle;
@end
TitleWindow.m
#import "TitleWindow.h"
#import <WebKit/WebKit.h>
@implementation TitleWindow
- (void)displayTitle:(WebView *)sender didReceiveTitle:(NSString *)title forFrame:(WebFrame *)frame
{
if (frame == [sender mainFrame]){
[[sender window] setTitle:title];
}
}
@end
答案 0 :(得分:0)
获取NSWebViews页面标题。
您使用 mainFrameTitle
NSString * pageTitleString =[_webView mainFrameTitle];
NSLog(@"%@" , pageTitleString);
示例2。
- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)webFrame{
[_window setTitle:[_webView mainFrameTitle]];
}
更新2
之前我还没有真正构建过基于文档的应用程序。因此设置一个以显示Web视图很有趣:-P。
这让我觉得这个问题有两个方面。
我发布的第一件事就是将示例2代码添加到document.m是不够的。
webview需要一名代表。
对我来说有用但可能不是(可能不是)正确的方法是在 Document.xib 中选择了webview。
顶部的Connections Inspector显示 frameLoadDelegate 。
我将其连接到文件的所有者,将其拖到文件夹中文件的所有者 >窗格。
这很有用。
每次我从文档中更改网页时,标题都随之改变。
要注意的第二件事是我认为设置文档标题的真正方法是:
[self setDisplayName:@"a title"];
在设置时有效:
- (void)windowControllerDidLoadNib:(NSWindowController *)aController
{
[super windowControllerDidLoadNib:aController];
// Add any code here that needs to be executed once the windowController has loaded the document's window.
NSURLRequest* request = [NSURLRequest requestWithURL:_theUrls];
[[_webView mainFrame] loadRequest:request];
[self setDisplayName:@"a title"];
}
一个正常的字符串,但如果我把它改为:
[self setDisplayName:[_webView mainFrameTitle]];
它不起作用,因为框架尚未加载,因此没有标题。
所以你会想到[self setDisplayName:[_ webView mainFrameTitle]];可以在WebFrameLoadDelegate中工作。不,不是的。我不确定为什么。
所以现在你可能想要使用示例2代码中的代码。