📄 webframe.mm
字号:
return _private->coreFrame->loader()->firstLayoutDone();}- (WebFrameLoadType)_loadType{ return (WebFrameLoadType)_private->coreFrame->loader()->loadType();}- (NSRange)_selectedNSRange{ return [self _convertToNSRange:_private->coreFrame->selection()->toNormalizedRange().get()];}- (void)_selectNSRange:(NSRange)range{ RefPtr<Range> domRange = [self _convertToDOMRange:range]; if (domRange) _private->coreFrame->selection()->setSelection(VisibleSelection(domRange.get(), SEL_DEFAULT_AFFINITY));}- (BOOL)_isDisplayingStandaloneImage{ Document* document = _private->coreFrame->document(); return document && document->isImageDocument();}- (unsigned)_pendingFrameUnloadEventCount{ return _private->coreFrame->eventHandler()->pendingFrameUnloadEventCount();}- (WebIconFetcher *)fetchApplicationIcon:(id)target selector:(SEL)selector{ return [WebIconFetcher _fetchApplicationIconForFrame:self target:target selector:selector];}- (void)_setIsDisconnected:(bool)isDisconnected{ _private->coreFrame->setIsDisconnected(isDisconnected);}- (void)_setExcludeFromTextSearch:(bool)exclude{ _private->coreFrame->setExcludeFromTextSearch(exclude);}#if ENABLE(NETSCAPE_PLUGIN_API)- (void)_recursive_resumeNullEventsForAllNetscapePlugins{ Frame* coreFrame = core(self); for (Frame* frame = coreFrame; frame; frame = frame->tree()->traverseNext(coreFrame)) { NSView <WebDocumentView> *documentView = [[kit(frame) frameView] documentView]; if ([documentView isKindOfClass:[WebHTMLView class]]) [(WebHTMLView *)documentView _resumeNullEventsForAllNetscapePlugins]; }}- (void)_recursive_pauseNullEventsForAllNetscapePlugins{ Frame* coreFrame = core(self); for (Frame* frame = coreFrame; frame; frame = frame->tree()->traverseNext(coreFrame)) { NSView <WebDocumentView> *documentView = [[kit(frame) frameView] documentView]; if ([documentView isKindOfClass:[WebHTMLView class]]) [(WebHTMLView *)documentView _pauseNullEventsForAllNetscapePlugins]; }}#endif- (BOOL)_pauseAnimation:(NSString*)name onNode:(DOMNode *)node atTime:(NSTimeInterval)time{ Frame* frame = core(self); if (!frame) return false; AnimationController* controller = frame->animation(); if (!controller) return false; Node* coreNode = [node _node]; if (!coreNode || !coreNode->renderer()) return false; return controller->pauseAnimationAtTime(coreNode->renderer(), name, time);}- (BOOL)_pauseTransitionOfProperty:(NSString*)name onNode:(DOMNode*)node atTime:(NSTimeInterval)time{ Frame* frame = core(self); if (!frame) return false; AnimationController* controller = frame->animation(); if (!controller) return false; Node* coreNode = [node _node]; if (!coreNode || !coreNode->renderer()) return false; return controller->pauseTransitionAtTime(coreNode->renderer(), name, time);}- (unsigned) _numberOfActiveAnimations{ Frame* frame = core(self); if (!frame) return false; AnimationController* controller = frame->animation(); if (!controller) return false; return controller->numberOfActiveAnimations();}- (void)_replaceSelectionWithFragment:(DOMDocumentFragment *)fragment selectReplacement:(BOOL)selectReplacement smartReplace:(BOOL)smartReplace matchStyle:(BOOL)matchStyle{ if (_private->coreFrame->selection()->isNone() || !fragment) return; applyCommand(ReplaceSelectionCommand::create(_private->coreFrame->document(), [fragment _documentFragment], selectReplacement, smartReplace, matchStyle)); _private->coreFrame->revealSelection(ScrollAlignment::alignToEdgeIfNeeded);}- (void)_replaceSelectionWithText:(NSString *)text selectReplacement:(BOOL)selectReplacement smartReplace:(BOOL)smartReplace{ DOMDocumentFragment* fragment = kit(createFragmentFromText(_private->coreFrame->selection()->toNormalizedRange().get(), text).get()); [self _replaceSelectionWithFragment:fragment selectReplacement:selectReplacement smartReplace:smartReplace matchStyle:YES];}- (void)_replaceSelectionWithMarkupString:(NSString *)markupString baseURLString:(NSString *)baseURLString selectReplacement:(BOOL)selectReplacement smartReplace:(BOOL)smartReplace{ DOMDocumentFragment *fragment = [self _documentFragmentWithMarkupString:markupString baseURLString:baseURLString]; [self _replaceSelectionWithFragment:fragment selectReplacement:selectReplacement smartReplace:smartReplace matchStyle:NO];}@end@implementation WebFrame- (id)init{ return nil;}// Should be deprecated.- (id)initWithName:(NSString *)name webFrameView:(WebFrameView *)view webView:(WebView *)webView{ return nil;}- (void)dealloc{ [_private release]; --WebFrameCount; [super dealloc];}- (void)finalize{ --WebFrameCount; [super finalize];}- (NSString *)name{ Frame* coreFrame = _private->coreFrame; if (!coreFrame) return nil; return coreFrame->tree()->name();}- (WebFrameView *)frameView{ return _private->webFrameView;}- (WebView *)webView{ return getWebView(self);}- (DOMDocument *)DOMDocument{ Frame* coreFrame = _private->coreFrame; if (!coreFrame) return nil; // FIXME: <rdar://problem/5145841> When loading a custom view/representation // into a web frame, the old document can still be around. This makes sure that // we'll return nil in those cases. if (![[self _dataSource] _isDocumentHTML]) return nil; Document* document = coreFrame->document(); // According to the documentation, we should return nil if the frame doesn't have a document. // While full-frame images and plugins do have an underlying HTML document, we return nil here to be // backwards compatible. if (document && (document->isPluginDocument() || document->isImageDocument())) return nil; return kit(coreFrame->document());}- (DOMHTMLElement *)frameElement{ Frame* coreFrame = _private->coreFrame; if (!coreFrame) return nil; return kit(coreFrame->ownerElement());}- (WebDataSource *)provisionalDataSource{ Frame* coreFrame = _private->coreFrame; return coreFrame ? dataSource(coreFrame->loader()->provisionalDocumentLoader()) : nil;}- (WebDataSource *)dataSource{ Frame* coreFrame = _private->coreFrame; return coreFrame && coreFrame->loader()->frameHasLoaded() ? [self _dataSource] : nil;}- (void)loadRequest:(NSURLRequest *)request{ _private->coreFrame->loader()->load(request, false);}static NSURL *createUniqueWebDataURL(){ CFUUIDRef UUIDRef = CFUUIDCreate(kCFAllocatorDefault); NSString *UUIDString = (NSString *)CFUUIDCreateString(kCFAllocatorDefault, UUIDRef); CFRelease(UUIDRef); NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:@"applewebdata://%@", UUIDString]]; CFRelease(UUIDString); return URL;}- (void)_loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL unreachableURL:(NSURL *)unreachableURL{ KURL responseURL; if (!baseURL) { baseURL = blankURL(); responseURL = createUniqueWebDataURL(); } ResourceRequest request([baseURL absoluteURL]); // hack because Mail checks for this property to detect data / archive loads [NSURLProtocol setProperty:@"" forKey:@"WebDataRequest" inRequest:(NSMutableURLRequest *)request.nsURLRequest()]; SubstituteData substituteData(WebCore::SharedBuffer::wrapNSData(data), MIMEType, encodingName, [unreachableURL absoluteURL], responseURL); _private->coreFrame->loader()->load(request, substituteData, false);}- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL{ if (!MIMEType) MIMEType = @"text/html"; [self _loadData:data MIMEType:MIMEType textEncodingName:encodingName baseURL:baseURL unreachableURL:nil];}- (void)_loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL unreachableURL:(NSURL *)unreachableURL{ NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding]; [self _loadData:data MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:baseURL unreachableURL:unreachableURL];}- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL{ [self _loadHTMLString:string baseURL:baseURL unreachableURL:nil];}- (void)loadAlternateHTMLString:(NSString *)string baseURL:(NSURL *)baseURL forUnreachableURL:(NSURL *)unreachableURL{ [self _loadHTMLString:string baseURL:baseURL unreachableURL:unreachableURL];}- (void)loadArchive:(WebArchive *)archive{ if (LegacyWebArchive* coreArchive = [archive _coreLegacyWebArchive]) _private->coreFrame->loader()->loadArchive(coreArchive);}- (void)stopLoading{ if (!_private->coreFrame) return; _private->coreFrame->loader()->stopForUserCancel();}- (void)reload{ if (!WebKitLinkedOnOrAfter(WEBKIT_FIRST_VERSION_WITH_RELOAD_FROM_ORIGIN) && [[[NSBundle mainBundle] bundleIdentifier] isEqualToString:@"com.apple.Safari"]) _private->coreFrame->loader()->reload(GetCurrentKeyModifiers() & shiftKey); else _private->coreFrame->loader()->reload(false);}- (void)reloadFromOrigin{ _private->coreFrame->loader()->reload(true);}- (WebFrame *)findFrameNamed:(NSString *)name{ Frame* coreFrame = _private->coreFrame; if (!coreFrame) return nil; return kit(coreFrame->tree()->find(name));}- (WebFrame *)parentFrame{ Frame* coreFrame = _private->coreFrame; if (!coreFrame) return nil; return [[kit(coreFrame->tree()->parent()) retain] autorelease];}- (NSArray *)childFrames{ Frame* coreFrame = _private->coreFrame; if (!coreFrame) return [NSArray array]; NSMutableArray *children = [NSMutableArray arrayWithCapacity:coreFrame->tree()->childCount()]; for (Frame* child = coreFrame->tree()->firstChild(); child; child = child->tree()->nextSibling()) [children addObject:kit(child)]; return children;}- (WebScriptObject *)windowObject{ Frame* coreFrame = _private->coreFrame; if (!coreFrame) return 0; return coreFrame->script()->windowScriptObject();}- (JSGlobalContextRef)globalContext{ Frame* coreFrame = _private->coreFrame; if (!coreFrame) return 0; return toGlobalRef(coreFrame->script()->globalObject()->globalExec());}@end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -