# URL Handler
The method **`FB.Canvas.setUrlHandler()`** registers the callback for inline processing (i.e. without page reload) of user actions when they click on any link to the current app from Canvas, including:
- All ticker stories
- Bookmarks
- Requests from the bookmarks drop-down list
- Request Notifications stories.
When user clicks on a ticker story for example, by default we would redirect the user to the corresponding URL. The app can choose to instead register a callback to display the achievement within the application.
Callback will be called with a field that contains the path of the URL, relative to you application's canvas URL; for example, if the URL that would have been loaded was `http://apps.facebook.com/yourgameXYZ/achievements/cheevo1.php?fb_source=canvas_ticker&fb_ticker_mod=achievement&fb_action_types=games.achieves`, callback will be called with parameter
```
{
path: "/achievements/cheevo1.php?fb_source=canvas_ticker&fb_ticker_mod=
achievement&fb_action_types=games.achieves"
}
```
## Example {#example}
```
function onUrl(data) {
if (data.path.indexOf("games.achieves") != -1) {
console.log('I will process some achievement now.');
} else if (data.path.indexOf("request_ids") != -1) {
console.log('I will process some request now.');
} else {
// default behaviour
window.location = data.path;
}
}
FB.Canvas.setUrlHandler(onUrl);
```
## Note {#note}
Each call to FB.Canvas.setUrlHandler() invalidates previously set callback, if any.
Only links pointing to canvas page (i.e. starting with `apps.facebook.com/your_app/`) will be sent for inline processing.
## Returns {#returns}
| Name | Type | Description |
| --- | --- | --- |
| path | `string` | Path to the achievement, relative to you application's canvas URL |
## Parameters {#params}
| Name | Type | Required | Description |
| --- | --- | --- | --- |
| callback | `function` | no | Callback function taking one argument, as described above. |