# 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. |