docs: Put window.open docs in its own chapter, regards #1137

This commit is contained in:
Cheng Zhao 2015-03-04 08:47:04 -08:00
parent eb31df2940
commit 2d6dd9f4d2
3 changed files with 63 additions and 50 deletions

View file

@ -20,6 +20,7 @@ Custom DOM elements:
* [`File` object](api/file-object.md)
* [`<webview>` tag](api/web-view-tag.md)
* [`window.open` function](api/window-open.md)
Modules for browser side:

View file

@ -641,7 +641,8 @@ Emitted when a redirect was received while requesting a resource.
Emitted when the page requested to open a new window for `url`. It could be
requested by `window.open` or an external link like `<a target='_blank'>`.
Check the next section [Handling Child Windows](#handling-child-windows) for more information.
By default a new `BrowserWindow` will be created for the `url`.
Calling `event.preventDefault()` can prevent creating new windows.
@ -842,52 +843,3 @@ app.on('ready', function() {
is different from the handlers on browser side.
2. There is no way to send synchronous messages from browser side to web pages,
because it would be very easy to cause dead locks.
## Handling Child Windows
When the page contents request opening a new window, either by invoking
`window.open` or by an external link such as `<a target='_blank'>`, by
default a new `BrowserWindow` will be created for the `url`, and a proxy
will be returned to `window.open` to let the page to have limited control over it.
The proxy has some limited standard functionality implemented, which will help
the page to interact with it. The following methods are avaialable:
### Window.blur()
Removes focus from the child window.
### Window.close()
Forcefully closes the child window without calling its unload event.
### Window.closed
Set to true after the child window gets closed.
### Window.eval(code)
* `code` String
Evaluates the code in the child window.
### Window.focus()
Focuses the child window (brings the window to front).
### Window.postMessage(message, targetOrigin)
* `message` String
* `targetOrigin` String
Sends a message to the child window with the specified origin or "*" for no origin preference.
In addition to these methods, the child window implements `window.opener` object with no properties
and a single method:
### window.opener.postMessage(message, targetOrigin)
* `message` String
* `targetOrigin` String
Sends a message to the parent window with the specified origin or "*" for no origin preference.

60
docs/api/window-open.md Normal file
View file

@ -0,0 +1,60 @@
# `window.open` function
When `window.open` is called to create a new window in web page, a new instance
of `BrowserWindow` will be created for the `url`, and a proxy will be returned
to `window.open` to let the page to have limited control over it.
The proxy only has some limited standard functionality implemented to be
compatible with traditional web pages, for full control of the created window
you should create a `BrowserWindow` directly.
## window.open(url, [frameName[, features]])
* `url` String
* `frameName` String
* `features` String
Creates a new window and returns an instance of `BrowserWindowProxy` class.
## window.opener.postMessage(message, targetOrigin)
* `message` String
* `targetOrigin` String
Sends a message to the parent window with the specified origin or `*` for no
origin preference.
## Class: BrowserWindowProxy
### BrowserWindowProxy.blur()
Removes focus from the child window.
### BrowserWindowProxy.close()
Forcefully closes the child window without calling its unload event.
### BrowserWindowProxy.closed
Set to true after the child window gets closed.
### BrowserWindowProxy.eval(code)
* `code` String
Evaluates the code in the child window.
### BrowserWindowProxy.focus()
Focuses the child window (brings the window to front).
### BrowserWindowProxy.postMessage(message, targetOrigin)
* `message` String
* `targetOrigin` String
Sends a message to the child window with the specified origin or `*` for no
origin preference.
In addition to these methods, the child window implements `window.opener` object
with no properties and a single method: