webkit programming in cocoa

43
#include <Cocoa/Cocoa.h> #include <WebKit/WebKit.h> @author Jason Harwig

Upload: jason-harwig

Post on 19-May-2015

6.235 views

Category:

Business


1 download

DESCRIPTION

Overview of the WebKit framework in Objective-C for programmers.

TRANSCRIPT

Page 1: WebKit Programming in Cocoa

#include <Cocoa/Cocoa.h>#include <WebKit/WebKit.h>

@author Jason Harwig

Page 2: WebKit Programming in Cocoa

[webkit description]

Page 3: WebKit Programming in Cocoa

"WebKit begins where the chrome ends."

- Surfin' Safari Blog

Page 4: WebKit Programming in Cocoa

"WebKit begins where the chrome ends."

- Surfin' Safari Blog

Safari featuresURL field, Tabs, Bookmarks, Find

WebKit featuresAnything in the webpage itself:

(frames, form controls, kick-ass CSS3 features, blazing page load speeds)

Page 5: WebKit Programming in Cocoa

[webkit history]

Page 6: WebKit Programming in Cocoa

KHTML

Page 7: WebKit Programming in Cocoa

KHTML2003

WebKit

Page 8: WebKit Programming in Cocoa
Page 9: WebKit Programming in Cocoa

[webkit usage]

Page 10: WebKit Programming in Cocoa

[webkit usage]

Reminder

add WebKit.Framework import WebKit.h

Page 11: WebKit Programming in Cocoa

WebView

WebFrame

WebFrameWebFrameWebFrame

mainFrame

childFrames

Page 12: WebKit Programming in Cocoa

WebView

WebFrame

WebFrameWebFrameWebFrame

WebFrameViewWebFrameViewWebFrameView

WebFrameView

mainFrame

childFrames

Page 13: WebKit Programming in Cocoa

webView

mainFrame

loadRequest:

Page 14: WebKit Programming in Cocoa

loadRequest:

• Runs asyncronously in current NSRunLoop

• Calls delegates:

WebResourceLoadDelegate WebFrameLoadDelegate

WebPolicyDelegate WebUIDelegate

Page 15: WebKit Programming in Cocoa

• decidePolicyForNewWindowAction:

• decidePolicyForNavigationAction:

• decidePolicyForMIMEType:

WebPolicyDelegate

Page 16: WebKit Programming in Cocoa

WebFrameLoadDelegate

• didFinishLoadForFrame:

• didFailLoadWithError:forFrame:

Page 17: WebKit Programming in Cocoa

didFinishLoadForFrame:(WebFrame *)frame{

if (frame != [webView mainFrame]) return;

}

Page 18: WebKit Programming in Cocoa

WebResourceLoadDelegate

Page 19: WebKit Programming in Cocoa

WebResourceLoadDelegate

willSendRequest:

Page 20: WebKit Programming in Cocoa

WebResourceLoadDelegate

willSendRequest:

didFinishLoading:

Page 21: WebKit Programming in Cocoa

WebResourceLoadDelegate

willSendRequest:

didFinishLoading:

Page 22: WebKit Programming in Cocoa

didReceiveContentLength:

didReceiveResponse:

didFailLoadingWithError:

WebResourceLoadDelegate

willSendRequest:

didFinishLoading:

Page 23: WebKit Programming in Cocoa

didReceiveContentLength:

didReceiveResponse:

didFailLoadingWithError:

WebResourceLoadDelegate

willSendRequest:

didFinishLoading:

didReceiveAuthenticationChallenge:

Page 24: WebKit Programming in Cocoa

WebUIDelegate

• runJavaScriptAlertPanelWithMessage:

• mouseDidMoveOverElement:

• contextMenuItemsForElement:

• willPerformDragDestinationAction:

... many more (see documentation)

Page 27: WebKit Programming in Cocoa

[[[webView mainFrame] dataSource] webArchive];

[webView mainFrame] loadData:[webArchive data]...];

WebArchive

Page 28: WebKit Programming in Cocoa

Accessing the DOM

DOMDocument *doc =

[webView mainFrameDocument];

Page 29: WebKit Programming in Cocoa

[doc createElement:@"div"];// Returns DOMElement

[[doc documentElement] innerHTML];

Page 30: WebKit Programming in Cocoa

Calling JavaScript

WebScriptObject *wso = [webView windowScriptObject];

[wso callWebScriptMethod:@"f" withArguments:nil];

/* or */[wso evaluateWebScript:@"f()"];

Page 31: WebKit Programming in Cocoa

id location = [wso valueForKey:@"location"];

NSString *href = [location valueForKey:@"href"];

Page 32: WebKit Programming in Cocoa

Calling Objective-C

[wso setValue:foo forKey:@"foo"];

// in JSfoo.bar();

Page 33: WebKit Programming in Cocoa

[webkit demo:JS]

Page 34: WebKit Programming in Cocoa

[webkit demo:HtmlUI]

Page 35: WebKit Programming in Cocoa
Page 36: WebKit Programming in Cocoa

5

6

Page 37: WebKit Programming in Cocoa

5 x 6 = 30

5

6

Page 38: WebKit Programming in Cocoa

5 x 6 = 30

5

6

2 ^ 30 = 1,073,741,824

Page 39: WebKit Programming in Cocoa

5 x 6 = 30

5

6

2 ^ 30 = 1,073,741,824

Page 40: WebKit Programming in Cocoa

[webkit demo:Delish]

Page 41: WebKit Programming in Cocoa

[webkit performSelector:@selector(demo:) withObject:Matt afterDelay:COUPLE_MINUTES]

Page 42: WebKit Programming in Cocoa

[webkit more]

• Site-Specific Browsers

• WebKit Plugins

• SIMBL (culater.net)

Page 43: WebKit Programming in Cocoa

Resources

• Webkit "Surfin' Safari Blog" (webkit.org/blog)

• Webkit Wiki (trac.webkit.org/wiki)

• Apple Documentation

• Delish (http://pinepointsoftware.com)