5 Send URL: Opening a Web Browser

▼ |  | Net: Networking Libraries

1 | URLs and HTTP
2 | URI Codec: Encoding and Decoding URIs
3 | Web Socket
4 | FTP: Client
5 | Send URL: Opening a Web Browser
6 | SMTP: Sending E-Mail
7 | sendmail: Sending E-Mail
8 | Headers: Parsing and Constructing
9 | IMAP: Reading Mail
10 | POP3: Reading Mail
11 | MIME: Decoding Internet Data
12 | Base 64: Encoding and Decoding
13 | Quoted-Printable: Encoding and Decoding
14 | DNS: Domain Name Service Queries
15 | NNTP: Newsgroup Protocol
16 | TCP: Unit and Signature
17 | TCP Redirect: tcp^ via Channels
18 | SSL Unit: tcp^ via SSL
19 | CGI Scripts
20 | Cookie: HTTP Client Storage
| Bibliography
| Index

On this page:

send-url
send-url/ file
send-url/ contents
external-browser
browser-preference?
unix-browser-list

top ← prev up next →

### 5`` Send URL: Opening a Web Browser

(require net/sendurl)

Provides send-url for opening a URL in the user’s chosen web browser.

See also browser/external, which requires racket/gui, but can prompt the user for a browser if no browser preference is set.

> > procedure
> > (send-url |  | str |  |  |  |
> > | [ | separate-window? |  |  |  |
> > |  | #:escape escape?]) |  | → |  | void?
> str : string?
> separate-window? : any/c = #t
> escape? : any/c = #t

Opens str, which represents a URL, in a platform-specific manner. For some platforms and configurations, the separate-window? parameter determines if the browser creates a new window to display the URL or not.

On Windows, send-url normally uses shell-execute to launch a browser. (If the URL appears to contain a fragment, it may use an intermediate redirecting file due to a bug in IE7.)

On Mac OS X, send-url runs osascript to start the user’s chosen browser.

On Unix, send-url uses a user-preference, or when none is set, it will look for a known browser. See the description of external-browser for details.

The url string is usually escaped to avoid dangerous shell characters (quotations, dollar signs, backslashes, and non-ASCII). Note that it is a good idea to encode URLs before passing them to this function.

On all platforms, external-browser parameter can be set to a procedure to override the above behavior — the procedure will be called with the url string.

> > procedure
> > (send-url/file |  | path |  |  |  |
> > | [ | separate-window? |  |  |  |
> > |  | #:fragment fragment |  |  |  |
> > |  | #:query query]) |  | → |  | void?
> path : path-string?
> separate-window? : any/c = #t
> fragment : (or/c string? false/c) = #f
> query : (or/c string? false/c) = #f

Similar to send-url, but accepts a path to a file to be displayed by the browser. Use this function when you want to display a local file: it takes care of the peculiarities of constructing the correct file:// URL, and uses send-url to display the file. If you need to use an anchor fragment or a query string, use the corresponding keyword arguments.

> > procedure
> > (send-url/contents |  | contents |  |  |  |
> > | [ | separate-window? |  |  |  |
> > |  | #:fragment fragment |  |  |  |
> > |  | #:query query |  |  |  |
> > |  | #:delete-at seconds]) |  | → |  | void?
> contents : string?
> separate-window? : any/c = #t
> fragment : (or/c string? false/c) = #f
> query : (or/c string? false/c) = #f
> seconds : (or/c number? false/c) = #f

Similar to send-url/file, but it consumes the contents of a page to show, and displayes it from a temporary file.

If delete-at is a number, the temporary file is removed after this many seconds. The deletion happens in a thread, so if racket exits before that it will not happen — when this function is called it scans old generated files (this happens randomly, not on every call) and removes them to avoid cluttering the temporary directory. If delete-at is #f, no delayed deletion happens, but old temporary files are still deleted as described above.

> parameter (external-browser) → browser-preference?
> (external-browser cmd) → void?
> cmd : browser-preference?

A parameter that can hold a procedure to override how a browser is started, or #f to use the default platform-dependent command.

On Unix, the command that is used depends on the 'external-browser preference. If the preference is unset, send-url uses the first of the browsers from unix-browser-list for which the executable is found. Otherwise, the preference should hold a symbol indicating a known browser (from the unix-browser-list), or it a pair of a prefix and a suffix string that are concatenated around the url string to make up a shell command to run. In addition, the external-browser paremeter can be set to one of these values, and send-url will use it instead of the preference value.

Note that the URL is encoded to make it work inside shell double-quotes: URLs can still hold characters like #, ?, and &, so if the external-browser is set to a pair of prefix/suffix strings, they should use double quotes around the url.

If the preferred or default browser can’t be launched, send-url fails. See get-preference and put-preferences for details on setting preferences.

> procedure (browser-preference? a) → boolean?
> a : any/c

Returns #t if v is a valid browser preference, #f otherwise. See external-browser for more information.

> value unix-browser-list : (listof symbol?)

A list of symbols representing Unix executable names that may be tried in order by send-url. The send-url function internally includes information on how to launch each executable with a URL.
top ← prev up next →