Skip to content

Global Properties ​

The global properties here refer to the top-level properties mounted on the constructor. All property names are in uppercase. These are subject to change in the future and are rarely used.

Scope and effective timing ​

These fields belong to the constructor and are shared by instances from that Artplayer module. They are not per-instance options and assignments are not automatically validated. Configure them before constructing players when possible. Some consumers read them at initialization, others at event time; changing a field does not rebuild existing menus, listeners, or pending timers. Separate module copies have separate constructors and fields.

Initialization and UI ​

FieldDefault and reading point
STYLEEmbedded CSS text. Import has already injected artplayer-style; assigning STYLE later does not update that node
DEBUGfalse; constructor decides whether to install logging listeners. Setting false later does not remove them
CONTEXTMENUtrue; checked when opening the desktop menu. Does not remove entries or prevent setting contextmenu.show manually
PLAYBACK_RATE / ASPECT_RATIO / FLIPDefault arrays are listed below. Read when constructing setting/context-menu entries; changing them does not refresh existing entries
SETTING_ITEM_WIDTH200px; read when constructing built-in submenu options. Explicit item widths can override it
SETTING_ITEM_HEIGHT35px; read when creating items/back rows and laying out panels. Existing node heights are not rewritten merely by assigning this field
SETTING_WIDTH250px; root width read during panel layout, still constrained by the container
USE_RAFfalse; initialization selects the raf loop and progress listener branch. Not a live mode toggle; raf emits during playback and does not replace native media events
LOG_VERSIONtrue; read by the callback about 100ms after module import, not once per player construction
REMOVE_SRC_WHEN_DESTROYtrue; read by each destroy call. false only skips removeAttribute('src')/load(); listeners, requests, UI, and plugin lifecycle still clean up. Preserving DOM uses the separate destroy(false) argument

Scheduling and interaction ​

Time values below use milliseconds unless stated otherwise. Already queued work retains the delay used when scheduled.

FieldDefault and reading point
NOTICE_TIME2000; read when showing a notice, without rescheduling an existing one
RESIZE_TIME200; read when resize/orientation queues a new task, canceling the previous task. This is trailing debounce
SCROLL_TIME / SCROLL_GAP200 / 50px. The delay is captured when the event system initializes; the gap is read on accepted scroll events. Leading throttle emits a boolean view event; the raw event is window:scroll
CONTROL_HIDE_TIME3000; checked against last-show time in video:timeupdate, while playing and without active setting/input/control interaction. Not a standalone timer
DBCLICK_TIME300; click-count window read on each video click. The first single click is not delayed while awaiting another
DBCLICK_FULLSCREEN / MOBILE_DBCLICK_PLAY / MOBILE_CLICK_PLAYtrue / true / false; read on each video click for desktop double-click fullscreen and mobile double/single-click playback. Mobile playback remains subject to the lock state
FAST_FORWARD_TIME / FAST_FORWARD_VALUE1000 / 3x; delay read when a long press is queued, rate when it activates. Requires the plugin to be enabled, playback active, and the player unlocked
TOUCH_MOVE_RATIO0.5; read during video gestures. Progress-bar dragging does not apply this video multiplier
VOLUME_STEP / SEEK_STEP0.1 / 5 seconds; read by shortcuts and accessible volume/progress slider actions
FULLSCREEN_WEB_IN_BODYtrue; read when entering web fullscreen. Exit restores that session's saved placement
AUTO_ORIENTATION_TIME200; read when a required web-fullscreen rotation is queued. Does not force device rotation capability
INFO_LOOP_TIME1000; read each time the visible info panel queues its next update

Resume records and reconnection ​

FieldDefault and reading point
AUTO_PLAYBACK_MAX10; read when playing timeupdate writes a record. Historical logic removes one first-enumerated key only if the count already exceeds the threshold before writing; not a strict 10-entry cap or LRU
AUTO_PLAYBACK_MIN5 seconds; decides whether saved progress merits a resume prompt, rather than preventing storage below 5 seconds
AUTO_PLAYBACK_TIMEOUT3000; read on the first timeupdate after a resume prompt is created, when hiding is scheduled
RECONNECT_TIME_MAX / RECONNECT_SLEEP_TIME5 attempts / 1000; read when handling a media error to decide retry and queue its delay. Retries belong to the current source/lifecycle; these do not configure HLS/DASH SDK retry policies

DEBUG ​

Whether to enable debug mode, which can print all built-in video events. Default is off.

▶ Run Code
js
Artplayer.DEBUG = true;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
});

STYLE ​

Returns the player style text.

▶ Run Code
js
console.log(Artplayer.STYLE);

CONTEXTMENU ​

Whether to enable the context menu. Default is on.

▶ Run Code
js
Artplayer.CONTEXTMENU = false;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
});

NOTICE_TIME ​

The display duration of notification messages, in milliseconds. Default is 2000.

▶ Run Code
js
Artplayer.NOTICE_TIME = 5000;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
});

SETTING_WIDTH ​

The default width of the settings panel, in pixels. Default is 250.

▶ Run Code
js
Artplayer.SETTING_WIDTH = 300;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
    setting: true,
    loop: true,
    flip: true,
    playbackRate: true,
    aspectRatio: true,
});

SETTING_ITEM_WIDTH ​

The default width of a setting item in the settings panel, in pixels. Default is 200.

▶ Run Code
js
Artplayer.SETTING_ITEM_WIDTH = 300;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
    setting: true,
    loop: true,
    flip: true,
    playbackRate: true,
    aspectRatio: true,
});

SETTING_ITEM_HEIGHT ​

The default height of a setting item in the settings panel, in pixels. Default is 35.

▶ Run Code
js
Artplayer.SETTING_ITEM_HEIGHT = 40;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
    setting: true,
    loop: true,
    flip: true,
    playbackRate: true,
    aspectRatio: true,
});

RESIZE_TIME ​

The debounce delay for the resize event, in milliseconds. Default is 200.

▶ Run Code
js
Artplayer.RESIZE_TIME = 500;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
});

art.on('resize', () => {
    console.log('resize');
});

SCROLL_TIME ​

The throttle time for the scroll event, in milliseconds. Default is 200.

▶ Run Code
js
Artplayer.SCROLL_TIME = 500;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
});

art.on('view', (visible) => {
    console.log('view', visible);
});

SCROLL_GAP ​

The boundary tolerance distance for the view event, in pixels. Default is 50.

▶ Run Code
js
Artplayer.SCROLL_GAP = 100;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
});

art.on('view', (visible) => {
    console.log('view', visible);
});

AUTO_PLAYBACK_MAX ​

The maximum record count for the auto-playback feature. Default is 10.

▶ Run Code
js
Artplayer.AUTO_PLAYBACK_MAX = 20;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
    autoPlayback: true,
});

AUTO_PLAYBACK_MIN ​

The minimum saved progress for showing the auto-playback resume prompt, in seconds. Default is 5.

▶ Run Code
js
Artplayer.AUTO_PLAYBACK_MIN = 10;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
    autoPlayback: true,
});

AUTO_PLAYBACK_TIMEOUT ​

The hide delay duration for the auto-playback feature, in milliseconds. Default is 3000.

▶ Run Code
js
Artplayer.AUTO_PLAYBACK_TIMEOUT = 5000;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
    autoPlayback: true,
});

RECONNECT_TIME_MAX ​

The maximum number of automatic reconnection attempts when a connection error occurs. Default is 5.

▶ Run Code
js
Artplayer.RECONNECT_TIME_MAX = 10;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/404.mp4',
});

RECONNECT_SLEEP_TIME ​

The delay time for automatic reconnection when a connection error occurs, in milliseconds. Default is 1000.

▶ Run Code
js
Artplayer.RECONNECT_SLEEP_TIME = 3000;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/404.mp4',
});

CONTROL_HIDE_TIME ​

The auto-hide delay time for the bottom control bar, in milliseconds. Default is 3000.

▶ Run Code
js
Artplayer.CONTROL_HIDE_TIME = 5000;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
});

DBCLICK_TIME ​

The delay time for the double-click event, in milliseconds. Default is 300.

▶ Run Code
js
Artplayer.DBCLICK_TIME = 500;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
});

art.on('dblclick', () => {
    console.log('dblclick');
});

DBCLICK_FULLSCREEN ​

On desktop, whether double-click toggles fullscreen. Default is true.

▶ Run Code
js
Artplayer.DBCLICK_FULLSCREEN = false;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
});

MOBILE_DBCLICK_PLAY ​

On mobile, whether double-click toggles play/pause. Default is true.

▶ Run Code
js
Artplayer.MOBILE_DBCLICK_PLAY = false;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
});

MOBILE_CLICK_PLAY ​

On mobile, whether single-click toggles play/pause. Default is false.

▶ Run Code
js
Artplayer.MOBILE_CLICK_PLAY = true;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
});

AUTO_ORIENTATION_TIME ​

On mobile, the delay time for auto-rotation, in milliseconds. Default is 200.

▶ Run Code
js
Artplayer.AUTO_ORIENTATION_TIME = 500;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
    autoOrientation: true,
});

INFO_LOOP_TIME ​

The refresh interval for the info panel, in milliseconds. Default is 1000.

▶ Run Code
js
Artplayer.INFO_LOOP_TIME = 2000;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
});

art.info.show = true;

FAST_FORWARD_VALUE ​

On mobile, the speed multiplier for long-press fast-forward. Default is 3.

▶ Run Code
js
Artplayer.FAST_FORWARD_VALUE = 5;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
    fastForward: true,
});

FAST_FORWARD_TIME ​

On mobile, the delay time for long-press fast-forward, in milliseconds. Default is 1000.

▶ Run Code
js
Artplayer.FAST_FORWARD_TIME = 2000;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
    fastForward: true,
});

TOUCH_MOVE_RATIO ​

On mobile, the speed multiplier for left/right swipe to seek. Default is 0.5.

▶ Run Code
js
Artplayer.TOUCH_MOVE_RATIO = 1;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
});

VOLUME_STEP ​

The step size for volume adjustment via keyboard shortcuts. Default is 0.1.

▶ Run Code
js
Artplayer.VOLUME_STEP = 0.2;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
});

SEEK_STEP ​

The step size for seeking via keyboard shortcuts, in seconds. Default is 5.

▶ Run Code
js
Artplayer.SEEK_STEP = 10;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
});

PLAYBACK_RATE ​

The built-in list of playback rates. Default is [0.5, 0.75, 1, 1.25, 1.5, 2].

▶ Run Code
js
Artplayer.PLAYBACK_RATE = [0.5, 1, 2, 3, 4, 5];

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
    setting: true,
    playbackRate: true,
});

art.contextmenu.show = true;
art.setting.show = true;

ASPECT_RATIO ​

The built-in list of video aspect ratios. Default is ['default', '4:3', '16:9'].

▶ Run Code
js
Artplayer.ASPECT_RATIO = ['default', '1:1', '2:1', '4:3', '6:5'];

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
    setting: true,
    aspectRatio: true,
});

art.contextmenu.show = true;
art.setting.show = true;

FLIP ​

The built-in list of video flip options. Default is ['normal', 'horizontal', 'vertical'].

▶ Run Code
js
Artplayer.FLIP = ['normal', 'horizontal'];

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
    setting: true,
    flip: true,
});

art.contextmenu.show = true;
art.setting.show = true;

FULLSCREEN_WEB_IN_BODY ​

Whether to mount the player under the body element during web fullscreen mode. Default is true.

▶ Run Code
js
Artplayer.FULLSCREEN_WEB_IN_BODY = false;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
    fullscreenWeb: true,
});

LOG_VERSION ​

Sets whether to print the player version. Default is true.

▶ Run Code
js
Artplayer.LOG_VERSION = false;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
});

USE_RAF ​

Sets whether to use requestAnimationFrame. Default is false. Currently, it is primarily used for smooth progress bar effects.

▶ Run Code
js
Artplayer.USE_RAF = true;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
    miniProgressBar: true,
});

REMOVE_SRC_WHEN_DESTROY ​

Whether to remove the video's src attribute and call load() to actively release media resources when destroying the player. Default is true.

Enabling this can reduce video resource usage in single-page applications or scenarios where players are frequently created/destroyed. Setting this to false skips this explicit media reset; the other destroy cleanup still runs.

▶ Run Code
js
Artplayer.REMOVE_SRC_WHEN_DESTROY = false;

var art = new Artplayer({
    container: '.artplayer-app',
    url: '/assets/sample/video.mp4',
});

// Run destroy cleanup without explicitly resetting src
art.destroy();