Skip to content

Commit 7cfecec

Browse files
committed
Merge pull request marcuswestin#142 from koenpunt/patch-1
update code blocks to have syntax highlighting
2 parents 2a927ae + 8e6e517 commit 7cfecec

File tree

1 file changed

+105
-79
lines changed

1 file changed

+105
-79
lines changed

README.md

Lines changed: 105 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -36,54 +36,64 @@ To use a WebViewJavascriptBridge in your own project:
3636

3737
2) Import the header file and declare an ivar property:
3838

39-
#import "WebViewJavascriptBridge.h"
39+
```objc
40+
#import "WebViewJavascriptBridge.h"
41+
```
4042

4143
...
4244

43-
@property WebViewJavascriptBridge* bridge;
45+
```objc
46+
@property WebViewJavascriptBridge* bridge;
47+
```
4448

4549
3) Instantiate WebViewJavascriptBridge with a UIWebView (iOS) or WebView (OSX):
4650

47-
self.bridge = [WebViewJavascriptBridge bridgeForWebView:webView handler:^(id data, WVJBResponseCallback responseCallback) {
48-
NSLog(@"Received message from javascript: %@", data);
49-
responseCallback(@"Right back atcha");
50-
}];
51+
```objc
52+
self.bridge = [WebViewJavascriptBridge bridgeForWebView:webView handler:^(id data, WVJBResponseCallback responseCallback) {
53+
NSLog(@"Received message from javascript: %@", data);
54+
responseCallback(@"Right back atcha");
55+
}];
56+
```
5157
5258
4) Go ahead and send some messages from ObjC to javascript:
5359
54-
[self.bridge send:@"Well hello there"];
55-
[self.bridge send:[NSDictionary dictionaryWithObject:@"Foo" forKey:@"Bar"]];
56-
[self.bridge send:@"Give me a response, will you?" responseCallback:^(id responseData) {
57-
NSLog(@"ObjC got its response! %@", responseData);
58-
}];
60+
```objc
61+
[self.bridge send:@"Well hello there"];
62+
[self.bridge send:[NSDictionary dictionaryWithObject:@"Foo" forKey:@"Bar"]];
63+
[self.bridge send:@"Give me a response, will you?" responseCallback:^(id responseData) {
64+
NSLog(@"ObjC got its response! %@", responseData);
65+
}];
66+
```
5967

6068
4) Finally, set up the javascript side:
6169

62-
function connectWebViewJavascriptBridge(callback) {
63-
if (window.WebViewJavascriptBridge) {
70+
```javascript
71+
function connectWebViewJavascriptBridge(callback) {
72+
if (window.WebViewJavascriptBridge) {
73+
callback(WebViewJavascriptBridge)
74+
} else {
75+
document.addEventListener('WebViewJavascriptBridgeReady', function() {
6476
callback(WebViewJavascriptBridge)
65-
} else {
66-
document.addEventListener('WebViewJavascriptBridgeReady', function() {
67-
callback(WebViewJavascriptBridge)
68-
}, false)
69-
}
77+
}, false)
7078
}
79+
}
80+
81+
connectWebViewJavascriptBridge(function(bridge) {
7182

72-
connectWebViewJavascriptBridge(function(bridge) {
73-
74-
/* Init your app here */
75-
76-
bridge.init(function(message, responseCallback) {
77-
alert('Received message: ' + message)
78-
if (responseCallback) {
79-
responseCallback("Right back atcha")
80-
}
81-
})
82-
bridge.send('Hello from the javascript')
83-
bridge.send('Please respond to this', function responseCallback(responseData) {
84-
console.log("Javascript got its response", responseData)
85-
})
83+
/* Init your app here */
84+
85+
bridge.init(function(message, responseCallback) {
86+
alert('Received message: ' + message)
87+
if (responseCallback) {
88+
responseCallback("Right back atcha")
89+
}
8690
})
91+
bridge.send('Hello from the javascript')
92+
bridge.send('Please respond to this', function responseCallback(responseData) {
93+
console.log("Javascript got its response", responseData)
94+
})
95+
})
96+
```
8797

8898
WKWebView Support (iOS 8 & OS 10.10)
8999
------------------------------------
@@ -95,16 +105,18 @@ WebViewJavascriptBridge supports [WKWebView](http://nshipster.com/wkwebkit/) for
95105

96106
1) Import the header file:
97107

98-
```
108+
```objc
99109
#import "WKWebViewJavascriptBridge.h"
100110
```
101111

102112
2) Instantiate WKWebViewJavascriptBridge and with a WKWebView object
103113

104-
WKWebViewJavascriptBridge* bridge = [WKWebViewJavascriptBridge bridgeForWebView:webView handler:^(id data, WVJBResponseCallback responseCallback) {
105-
NSLog(@"Received message from javascript: %@", data);
106-
responseCallback(@"Right back atcha");
107-
}];
114+
```objc
115+
WKWebViewJavascriptBridge* bridge = [WKWebViewJavascriptBridge bridgeForWebView:webView handler:^(id data, WVJBResponseCallback responseCallback) {
116+
NSLog(@"Received message from javascript: %@", data);
117+
responseCallback(@"Right back atcha");
118+
}];
119+
```
108120
109121
Contributors & Forks
110122
--------------------
@@ -127,15 +139,17 @@ The `WVJBResponseCallback` will not be `nil` if the javascript expects a respons
127139
Optionally, pass in `webViewDelegate:(UIWebViewDelegate*)webViewDelegate` if you need to respond to the [web view's lifecycle events](http://developer.apple.com/library/ios/documentation/uikit/reference/UIWebViewDelegate_Protocol/Reference/Reference.html).
128140
129141
Example:
130-
131-
[WebViewJavascriptBridge bridgeForWebView:webView handler:^(id data, WVJBResponseCallback responseCallback) {
132-
NSLog(@"Received message from javascript: %@", data);
133-
if (responseCallback) {
134-
responseCallback(@"Right back atcha");
135-
}
136-
}]
137-
138-
[WebViewJavascriptBridge bridgeForWebView:webView webViewDelegate:self handler:^(id data, WVJBResponseCallback responseCallback) { /* ... */ }];
142+
143+
```objc
144+
[WebViewJavascriptBridge bridgeForWebView:webView handler:^(id data, WVJBResponseCallback responseCallback) {
145+
NSLog(@"Received message from javascript: %@", data);
146+
if (responseCallback) {
147+
responseCallback(@"Right back atcha");
148+
}
149+
}]
150+
151+
[WebViewJavascriptBridge bridgeForWebView:webView webViewDelegate:self handler:^(id data, WVJBResponseCallback responseCallback) { /* ... */ }];
152+
```
139153

140154
##### `[bridge send:(id)data]`
141155
##### `[bridge send:(id)data responseCallback:(WVJBResponseCallback)responseCallback]`
@@ -144,21 +158,25 @@ Send a message to javascript. Optionally expect a response by giving a `response
144158

145159
Example:
146160

147-
[self.bridge send:@"Hi"];
148-
[self.bridge send:[NSDictionary dictionaryWithObject:@"Foo" forKey:@"Bar"]];
149-
[self.bridge send:@"I expect a response!" responseCallback:^(id responseData) {
150-
NSLog(@"Got response! %@", responseData);
151-
}];
161+
```objc
162+
[self.bridge send:@"Hi"];
163+
[self.bridge send:[NSDictionary dictionaryWithObject:@"Foo" forKey:@"Bar"]];
164+
[self.bridge send:@"I expect a response!" responseCallback:^(id responseData) {
165+
NSLog(@"Got response! %@", responseData);
166+
}];
167+
```
152168
153169
##### `[bridge registerHandler:(NSString*)handlerName handler:(WVJBHandler)handler]`
154170
155171
Register a handler called `handlerName`. The javascript can then call this handler with `WebViewJavascriptBridge.callHandler("handlerName")`.
156172
157173
Example:
158174
159-
[self.bridge registerHandler:@"getScreenHeight" handler:^(id data, WVJBResponseCallback responseCallback) {
160-
responseCallback([NSNumber numberWithInt:[UIScreen mainScreen].bounds.size.height]);
161-
}];
175+
```objc
176+
[self.bridge registerHandler:@"getScreenHeight" handler:^(id data, WVJBResponseCallback responseCallback) {
177+
responseCallback([NSNumber numberWithInt:[UIScreen mainScreen].bounds.size.height]);
178+
}];
179+
```
162180

163181
##### `[bridge callHandler:(NSString*)handlerName data:(id)data]`
164182
##### `[bridge callHandler:(NSString*)handlerName data:(id)data responseCallback:(WVJBResponseCallback)callback]`
@@ -167,10 +185,12 @@ Call the javascript handler called `handlerName`. Optionally expect a response b
167185

168186
Example:
169187

170-
[self.bridge callHandler:@"showAlert" data:@"Hi from ObjC to JS!"];
171-
[self.bridge callHandler:@"getCurrentPageUrl" data:nil responseCallback:^(id responseData) {
172-
NSLog(@"Current UIWebView page URL is: %@", responseData);
173-
}];
188+
```objc
189+
[self.bridge callHandler:@"showAlert" data:@"Hi from ObjC to JS!"];
190+
[self.bridge callHandler:@"getCurrentPageUrl" data:nil responseCallback:^(id responseData) {
191+
NSLog(@"Current UIWebView page URL is: %@", responseData);
192+
}];
193+
```
174194
175195
#### Custom bundle
176196
`WebViewJavascriptBridge` requires `WebViewJavascriptBridge.js.txt` file that is injected into web view to create a bridge on JS side. Standard implementation uses `mainBundle` to search for this file. If you e.g. build a static library and you have that file placed somewhere else you can use this method to specify which bundle should be searched for `WebViewJavascriptBridge.js.txt` file:
@@ -179,8 +199,7 @@ Example:
179199
180200
Example:
181201
182-
183-
```
202+
```objc
184203
[WebViewJavascriptBridge bridgeForWebView:_webView
185204
webViewDelegate:self
186205
handler:^(id data, WVJBResponseCallback responseCallback) {
@@ -198,10 +217,12 @@ Always wait for the `WebViewJavascriptBridgeReady` DOM event.
198217

199218
Example:
200219

201-
document.addEventListener('WebViewJavascriptBridgeReady', function(event) {
202-
var bridge = event.bridge
203-
// Start using the bridge
204-
}, false)
220+
```javascript
221+
document.addEventListener('WebViewJavascriptBridgeReady', function(event) {
222+
var bridge = event.bridge
223+
// Start using the bridge
224+
}, false)
225+
```
205226

206227
##### `bridge.init(function messageHandler(data, response) { ... })`
207228

@@ -213,12 +234,14 @@ The `response` object will be defined if if ObjC sent the message with a `WVJBRe
213234

214235
Example:
215236

216-
bridge.init(function(data, responseCallback) {
217-
alert("Got data " + JSON.stringify(data))
218-
if (responseCallback) {
219-
responseCallback("Right back atcha!")
220-
}
221-
})
237+
```javascript
238+
bridge.init(function(data, responseCallback) {
239+
alert("Got data " + JSON.stringify(data))
240+
if (responseCallback) {
241+
responseCallback("Right back atcha!")
242+
}
243+
})
244+
```
222245

223246
##### `bridge.send("Hi there!")`
224247
##### `bridge.send({ Foo:"Bar" })`
@@ -228,22 +251,25 @@ Send a message to ObjC. Optionally expect a response by giving a `responseCallba
228251

229252
Example:
230253

231-
bridge.send("Hi there!")
232-
bridge.send("Hi there!", function(responseData) {
233-
alert("I got a response! "+JSON.stringify(responseData))
234-
})
254+
```javascript
255+
bridge.send("Hi there!")
256+
bridge.send("Hi there!", function(responseData) {
257+
alert("I got a response! "+JSON.stringify(responseData))
258+
})
259+
```
235260

236261
##### `bridge.registerHandler("handlerName", function(responseData) { ... })`
237262

238263
Register a handler called `handlerName`. The ObjC can then call this handler with `[bridge callHandler:"handlerName" data:@"Foo"]` and `[bridge callHandler:"handlerName" data:@"Foo" responseCallback:^(id responseData) { ... }]`
239264

240265
Example:
241266

242-
bridge.registerHandler("showAlert", function(data) { alert(data) })
243-
bridge.registerHandler("getCurrentPageUrl", function(data, responseCallback) {
244-
responseCallback(document.location.toString())
245-
})
246-
267+
```javascript
268+
bridge.registerHandler("showAlert", function(data) { alert(data) })
269+
bridge.registerHandler("getCurrentPageUrl", function(data, responseCallback) {
270+
responseCallback(document.location.toString())
271+
})
272+
```
247273

248274
iOS4 support (with JSONKit)
249275
---------------------------

0 commit comments

Comments
 (0)