Skip to content

Window Open Promise Reference

Coverage License NPM Version Open Issues Size

πŸͺŸ Promised Window.open();.

Usage

πŸ“¦ Node

Install window-open-promise as a dependency:

Terminal window
1
pnpm add window-open-promise
2
# or
3
npm install window-open-promise
4
# or
5
yarn add window-open-promise

Import it and use it:

1
import { windowOpenPromise } from "window-open-promise";
2
3
const windowOpen = windowOpenPromise(globalThis);
4
5
windowOpen({
6
url: "https://example.com", // URL is not required, you can open a blank window
7
top: 10,
8
left: 10,
9
})
10
.then(newWindow => {
11
newWindow.console.log("This will log in the new window.");
12
newWindow.addEventListener("beforeunload", _event => {
13
console.log("This will log when the new window is closed.");
14
});
15
})
16
.catch(_error => {
17
console.error("This will log if the new window can't be opened.");
18
});

πŸ¦• Deno

Import window-open-promise using the npm: prefix, and use it directly:

1
import { windowOpenPromise } from "npm:window-open-promise";
2
3
const windowOpen = windowOpenPromise(globalThis);
4
5
try {
6
const newWindow = await windowOpen({
7
url: "https://example.com", // URL is not required, you can open a blank window
8
top: 10,
9
left: 10,
10
});
11
newWindow.console.log("This will log in the new window.");
12
newWindow.addEventListener("beforeunload", _event => {
13
console.log("This will log when the new window is closed.");
14
});
15
} catch (_error) {
16
console.error("This will log if the new window can't be opened.");
17
}

🌎 Browser

Import window-open-promise using esm.sh, and use it directly:

1
<script type="module">
2
import { windowOpenPromise } from "https://esm.sh/window-open-promise";
3
4
const windowOpen = windowOpenPromise(globalThis);
5
6
try {
7
const newWindow = await windowOpen({
8
url: "https://example.com", // URL is not required, you can open a blank window
9
top: 10,
10
left: 10,
11
});
12
newWindow.console.log("This will log in the new window.");
13
newWindow.addEventListener("beforeunload", _event => {
14
console.log("This will log when the new window is closed.");
15
});
16
} catch (_error) {
17
console.error("This will log if the new window can't be opened.");
18
}
19
</script>

Type Aliases

WindowOpenPromiseFeatures

Ζ¬ WindowOpenPromiseFeatures: Omit<WindowOpenPromiseOptions, "replace" | "target" | "url">

WindowOpenPromise features.


WindowOpenPromiseOptions

Ζ¬ WindowOpenPromiseOptions: Object

WindowOpenPromise options.

Type declaration

NameTypeDescription
height (optional)numberWindowOpenPromise height (minimum 100).
left (optional)numberWindowOpenPromise left position.
menuBar (optional)booleanWindowOpenPromise renders the menu bar.
noOpener (optional)booleanWindowOpenPromise can’t access it’s opener.
resizable (optional)booleanWindowOpenPromise is resizable.
scrollbars (optional)booleanWindowOpenPromise has scrollbars.
target (optional)stringWindowOpenPromise target.
titleBar (optional)booleanWindowOpenPromise renders the title bar.
toolBar (optional)booleanWindowOpenPromise renders the tool bar.
top (optional)numberWindowOpenPromise top position.
url (optional)stringWindowOpenPromise url.
width (optional)numberWindowOpenPromise width (minimum 100).

Functions

featureJoin

β–Έ featureJoin<Item>(iterable): string

Joins given array of features with the FEATURE_SEPARATOR.

Type parameters

NameType
Itemextends Strigifiable

Parameters

NameType
iterableReadonly<Iterable<Item>>

Returns

string

Joint string.

Example

1
featureJoin(["top=10", "left=10", "resizable=1"]); // "top=10,left=10,resizable=1"

featureMap

β–Έ featureMap(iterable): Readonly<IterableIterator<string>>

Maps array of feature entries to valid values.

Parameters

NameType
iterableReadonly<Iterable<EntryOf<WindowOpenPromiseFeatures>>>

Returns

Readonly<IterableIterator<string>>

Array of formatted features.

Example

1
featureMap([
2
["top", "10"],
3
["left", "10"],
4
["resizable", true],
5
]); // ["top=10", "left=10", "resizable=1"]

featureParser

β–Έ featureParser(features?): string

Parses features object into features string.

Parameters

NameTypeDescription
features (optional)WindowOpenPromiseFeaturesFeatures object.

Returns

string

Parsed string.

Example

1
featureParser({
2
top: 10,
3
left: 10,
4
resizable: true,
5
}); // "top=10,left=10,resizable=1"

featureValueMapper

β–Έ featureValueMapper(value): number

Takes a feature value and returns a formatted feature value.

Parameters

NameType
valueunknown

Returns

number

Feature value.

Example

1
featureValueMapper(true); // 1
2
featureValueMapper(false); // 0
3
featureValueMapper(13); // 13

windowOpenPromise

β–Έ windowOpenPromise(global): (options: WindowOpenPromiseOptions) => { catch: <RejectedValue_1>(this: void, onrejected?: Unary<unknown, RejectedValue_1 | PromiseLike<RejectedValue_1>>) => Promise<Window | RejectedValue_1> ; then: <ResolvedValue, RejectedValue>(this: void, onResolved?: Unary<Window, ResolvedValue | PromiseLike<ResolvedValue>>, onRejected?: Unary<unknown, RejectedValue | PromiseLike<RejectedValue>>) => Promise<ResolvedValue | RejectedValue> }

Promised Window.open.

Parameters

NameType
globalReadonly<Pick<Window, "open">>

Returns

fn

Curried function with window in context.

β–Έ (options?): Object

Curried function with window set.

Parameters
NameTypeDefault valueDescription
optionsWindowOpenPromiseOptionsEMPTY_OBJECTWindowOpenPromise options.
Returns

Object

Promise with new window.

NameTypeDescription
catch<RejectedValue_1>(this: void, onrejected?: Unary<unknown, RejectedValue_1 | PromiseLike<RejectedValue_1>>) => Promise<Window | RejectedValue_1>-
then<ResolvedValue, RejectedValue>(this: void, onResolved?: Unary<Window, ResolvedValue | PromiseLike<ResolvedValue>>, onRejected?: Unary<unknown, RejectedValue | PromiseLike<RejectedValue>>) => Promise<ResolvedValue | RejectedValue>-

Example

1
const windowOpen = windowOpenPromise(window);
2
windowOpen({
3
url: "https://example.com",
4
top: 10,
5
left: 10,
6
})
7
.then(newWindow => {
8
newWindow.console.log("This will log in the new window.");
9
newWindow.addEventListener("beforeunload", _event => {
10
console.log("This will log when the new window is closed.");
11
});
12
})
13
.catch(_error => {
14
console.error("This will log if the new window can't be opened.");
15
});

Example

1
const windowOpen = windowOpenPromise(window);
2
windowOpen({
3
url: "https://example.com",
4
top: 10,
5
left: 10,
6
})
7
.then(newWindow => {
8
newWindow.console.log("This will log in the new window.");
9
newWindow.addEventListener("beforeunload", _event => {
10
console.log("This will log when the new window is closed.");
11
});
12
})
13
.catch(_error => {
14
console.error("This will log if the new window can't be opened.");
15
});