describe("Document", function () { afterEach(function () { [...Artplayer.instances].forEach((art) => { art.destroy(true); }); }); function testAll(art, done) { let isDone = false; art.on("ready", () => { expect(art.id).to.be.an("number"); if (!isDone) { isDone = true; done(); } }); art.on("video:error", () => { expect(art.id).to.be.an("number"); if (!isDone) { isDone = true; done(); } }); setTimeout(() => { expect(art.id).to.be.an("number"); if (!isDone) { isDone = true; done(); } }, 1000); } it("Test0", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { var $video = art.template.query(".art-video"); console.info($video); }); testAll(art, done); }); it("Test1", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { var $video = art.query(".art-video"); console.info($video); }); testAll(art, done); }); it("Test2", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.storage.set("your-key", "your-value"); art.storage.get("your-key"); art.storage.del("your-key"); art.storage.clear(); testAll(art, done); }); it("Test3", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { console.info(art.i18n.get("Play")); }); testAll(art, done); }); it("Test4", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", lang: "jp", }); art.i18n.update({ "zh-cn": { Language: "简体", }, "zh-tw": { Language: "繁體", }, en: { Language: "English", }, jp: { Language: "日文", }, fr: { Language: "Français", }, ru: { Language: "Russe", }, }); testAll(art, done); }); it("Test5", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", subtitle: { url: "./assets/sample/subtitle.srt", }, }); art.on("ready", () => { art.seek = 20; art.subtitle.show = false; setTimeout(() => { art.subtitle.show = true; }, 3000); }); testAll(art, done); }); it("Test6", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", subtitle: { url: "./assets/sample/subtitle.srt", encoding: "utf-8", style: { color: "#03A9F4", "font-size": "30px", }, }, }); art.on("ready", () => { art.seek = 20; setTimeout(() => { art.subtitle.style({ color: "red", "font-size": "40px", }); }, 3000); }); testAll(art, done); }); it("Test7", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", subtitle: { url: "./assets/sample/subtitle.srt", encoding: "utf-8", style: { color: "#03A9F4", "font-size": "30px", }, }, }); art.on("ready", () => { console.info(art.subtitle.url); setTimeout(() => { art.subtitle.url = "./assets/sample/subtitle.srt?t=1"; }, 3000); }); testAll(art, done); }); it("Test8", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", subtitle: { url: "./assets/sample/subtitle.srt", encoding: "utf-8", style: { color: "red", "font-size": "30px", }, }, }); art.on("ready", () => { art.seek = 20; setTimeout(() => { art.subtitle.switch("./assets/sample/subtitle.srt?t=1", { name: "The new subtitle", style: { color: "green", "font-size": "24px", }, }); }, 3000); }); testAll(art, done); }); it("Test9", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); var img = "./assets/sample/layer.png"; art.on("ready", () => { setTimeout(() => { art.layers.add({ html: ``, style: { position: "absolute", top: "20px", right: "20px", opacity: ".9", }, }); }, 3000); }); testAll(art, done); }); it("Test10", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { art.notice.show = "自定义提示信息1"; art.notice.show = "自定义提示信息2"; }); testAll(art, done); }); it("Test11", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { setTimeout(() => { art.controls.show = false; }, 3000); }); testAll(art, done); }); it("Test12", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { setTimeout(() => { art.controls.add({ position: "right", index: 10, html: "自定义按钮", tooltip: "自定义按钮的提示", click: function () { console.log("你点击了自定义按钮"); }, }); }, 3000); }); testAll(art, done); }); it("Test13", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { art.contextmenu.show = true; setTimeout(() => { art.contextmenu.show = false; }, 3000); }); testAll(art, done); }); it("Test14", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { art.contextmenu.show = true; setTimeout(() => { art.contextmenu.add({ html: "自定义菜单", click: function () { console.info("你点击了自定义菜单"); art.contextmenu.show = false; }, }); }, 3000); }); testAll(art, done); }); it("Test15", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { art.loading.show = true; setTimeout(() => { art.loading.show = false; }, 3000); }); testAll(art, done); }); it("Test16", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { art.mask.show = true; setTimeout(() => { art.mask.show = false; }, 3000); }); testAll(art, done); }); it("Test17", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { art.hotkey.add(65, () => { console.info("你点击了 A 键"); }); art.hotkey.add(66, () => { console.info("你点击了 B 键"); }); }); testAll(art, done); }); it("Test18", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", setting: true, autoSize: true, }); art.on("ready", () => { art.seek = 20; art.setting.show = true; setTimeout(() => { art.setting.show = false; }, 3000); }); testAll(art, done); }); it("Test19", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { console.info(Artplayer.instances); }); testAll(art, done); }); it("Test20", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("video:play", (...args) => { console.info(args); }); testAll(art, done); }); it("Test21", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", (...args) => { console.info(args); }); testAll(art, done); }); it("Test22", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("play", (...args) => { console.info(args); }); testAll(art, done); }); it("Test23", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("pause", (...args) => { console.info(args); }); testAll(art, done); }); it("Test24", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("seek", (...args) => { console.info(args); }); art.on("ready", (...args) => { art.seek = 5; }); testAll(art, done); }); it("Test25", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("volume", (...args) => { console.info(args); }); art.on("ready", (...args) => { art.volume = 0.5; }); testAll(art, done); }); it("Test26", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("destroy", (...args) => { console.info(args); }); art.on("ready", (...args) => { art.destroy(); }); testAll(art, done); }); it("Test27", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("focus", (...args) => { console.info(args); }); testAll(art, done); }); it("Test28", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("blur", (...args) => { console.info(args); }); testAll(art, done); }); it("Test29", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("hover", (state) => { // state 为true时,鼠标从外面移进播放器 // state 为false时,鼠标从播放器移出外面 console.info(state); }); testAll(art, done); }); it("Test30", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", autoSize: true, }); art.on("resize", (...args) => { console.info(args); }); testAll(art, done); }); it("Test31", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("mousemove", (...args) => { console.info(args); }); testAll(art, done); }); it("Test32", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("url", (...args) => { console.info(args); }); art.on("ready", (...args) => { art.url = "./assets/sample/video.mp4?t=0"; }); testAll(art, done); }); it("Test33", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", fullscreen: true, }); art.on("fullscreen", (...args) => { console.info(args); }); testAll(art, done); }); it("Test34", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", fullscreenWeb: true, }); art.on("fullscreenWeb", (...args) => { console.info(args); }); testAll(art, done); }); it("Test35", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("hotkey", (...args) => { console.info(args); }); testAll(art, done); }); it("Test36", function (done) { var art = new Artplayer({ container: ".artplayer-app", // container: document.querySelector('.artplayer-app'), url: "./assets/sample/video.mp4", }); testAll(art, done); }); it("Test37", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); testAll(art, done); }); it("Test38", function (done) { var art = new Artplayer( { container: ".artplayer-app", url: "./assets/sample/video.mp4", muted: true, }, function () { this.play(); } ); testAll(art, done); }); it("Test39", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", poster: "./assets/sample/poster.jpg", }); testAll(art, done); }); it("Test40", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", title: "【新海诚动画】『秒速5センチメートル』", screenshot: true, }); testAll(art, done); }); it("Test41", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", theme: "#ffad00", }); testAll(art, done); }); it("Test42", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", volume: 0.5, }); testAll(art, done); }); it("Test43", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", isLive: true, }); testAll(art, done); }); it("Test44", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", muted: true, }); testAll(art, done); }); it("Test45", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", autoplay: true, muted: true, }); testAll(art, done); }); it("Test46", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", autoMini: true, }); testAll(art, done); }); it("Test47", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", loop: true, }); testAll(art, done); }); it("Test48", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", flip: true, setting: true, }); testAll(art, done); }); it("Test49", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", playbackRate: true, setting: true, }); testAll(art, done); }); it("Test50", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", aspectRatio: true, setting: true, }); testAll(art, done); }); it("Test51", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", screenshot: true, // 可选 moreVideoAttr: { crossOrigin: "anonymous", }, }); testAll(art, done); }); it("Test52", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", setting: true, }); testAll(art, done); }); it("Test53", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", hotkey: true, }); testAll(art, done); }); it("Test54", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", pip: true, }); testAll(art, done); }); it("Test55", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", mutex: true, }); testAll(art, done); }); it("Test56", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", fullscreen: true, }); testAll(art, done); }); it("Test57", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", fullscreenWeb: true, }); testAll(art, done); }); it("Test58", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", subtitle: { url: "./assets/sample/subtitle.srt", }, setting: true, subtitleOffset: true, }); testAll(art, done); }); it("Test59", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", miniProgressBar: true, }); testAll(art, done); }); it("Test60", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", playsInline: true, }); testAll(art, done); }); it("Test61", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", setting: true, settings: [ { html: "自定义设置01", selector: [ { html: "子菜单01", }, { html: "子菜单02", }, ], onSelect: function (item) { console.log(item.html); }, }, { html: "自定义设置02", selector: [ { html: "子菜单01", }, { html: "子菜单02", }, ], onSelect: function (item) { console.log(item.html); }, }, ], }); testAll(art, done); }); it("Test62", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", contextmenu: [ { html: "自定义菜单", click: function () { console.info("你点击了自定义菜单"); art.contextmenu.show = false; }, }, ], }); art.on("ready", () => { art.contextmenu.show = true; }); testAll(art, done); }); it("Test63", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", controls: [ { disable: false, name: "button", index: 10, position: "right", html: "自定义按钮", tooltip: "自定义按钮的提示1", style: { color: "red", }, click: function () { console.log("你点击了自定义按钮1"); }, mounted: function () { console.log("自定义按钮挂载完成1"); }, }, { position: "left", html: "自定义按钮2", tooltip: "自定义按钮的提示2", style: { color: "green", }, click: function () { console.log("你点击了自定义按钮2"); }, }, ], }); testAll(art, done); }); it("Test64", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", quality: [ { default: true, html: "SD 480P", url: "./assets/sample/video.mp4", }, { html: "HD 720P", url: "./assets/sample/video.mp4", }, ], }); testAll(art, done); }); it("Test65", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", highlight: [ { time: 60, text: "One more chance", }, { time: 120, text: "谁でもいいはずなのに", }, { time: 180, text: "夏の想い出がまわる", }, { time: 240, text: "こんなとこにあるはずもないのに", }, { time: 300, text: "--终わり--", }, ], }); testAll(art, done); }); it("Test66", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", // whitelist: [(ua) => /iPhone OS 11/gi.test(ua)], // whitelist: [/iPhone OS 11/gi], // whitelist: ['iPhone OS 11'], whitelist: ["*"], }); testAll(art, done); }); it("Test67", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", thumbnails: { url: "./assets/sample/thumbnails.png", number: 100, column: 10, }, }); testAll(art, done); }); it("Test68", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", subtitle: { url: "./assets/sample/subtitle.srt", type: "srt", encoding: "utf-8", style: { color: "#03A9F4", "font-size": "30px", }, }, }); testAll(art, done); }); it("Test69", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", moreVideoAttr: { "webkit-playsinline": true, playsInline: true, }, }); testAll(art, done); }); it("Test70", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", icons: { loading: '', state: '', play: "", pause: "", check: "", volume: "", volumeClose: "", screenshot: "", setting: "", pip: "", arrowLeft: "", arrowRight: "", playbackRate: "", aspectRatio: "", config: "", lock: "", flip: "", unlock: "", fullscreenOff: "", fullscreenOn: "", fullscreenWebOff: "", fullscreenWebOn: "", switchOn: "", switchOff: "", error: "", indicator: "", }, }); testAll(art, done); }); it("Test71", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.flv", type: "flv", }); testAll(art, done); }); it("Test72", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.flv", customType: { flv: function (video, url, art) { // video: 视频dom元素 // url: 视频地址 // art: 当前实例 }, }, }); testAll(art, done); }); it("Test73", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", lang: "en", }); testAll(art, done); }); it("Test74", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", lock: true, }); testAll(art, done); }); it("Test75", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", fastForward: true, }); testAll(art, done); }); it("Test76", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", autoPlayback: true, }); testAll(art, done); }); it("Test77", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", autoOrientation: true, }); testAll(art, done); }); it("Test78", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", airplay: true, }); testAll(art, done); }); it("Test79", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", autoSize: true, fullscreen: true, fullscreenWeb: true, plugins: [ artplayerPluginAds({ // html广告,假如是视频广告则忽略该值 html: '', // 视频广告的地址 video: "./assets/sample/test1.mp4", // 广告跳转网址,为空则不跳转 url: "http://artplayer.org", // 必须观看的时长,期间不能被跳过,单位为秒 // 当该值大于或等于totalDuration时,不能提前关闭广告 // 当该值等于或小于0时,则随时都可以关闭广告 playDuration: 5, // 广告总时长,单位为秒 totalDuration: 10, // 视频广告是否默认静音 muted: false, // 多语言支持 i18n: { close: "关闭广告", countdown: "%s秒", detail: "查看详情", canBeClosed: "%s秒后可关闭广告", }, }), ], }); art.on("artplayerPluginAds:click", (ads) => { console.info("广告被点击", ads); }); art.on("artplayerPluginAds:skip", (ads) => { console.info("广告被跳过", ads); }); testAll(art, done); }); it("Test80", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", autoSize: true, setting: true, playbackRate: true, fullscreenWeb: true, plugins: [ artplayerPluginDanmuku({ // 弹幕数组 danmuku: [ { text: "111", // 弹幕文本 time: 1, // 发送时间,单位秒 color: "#fff", // 弹幕局部颜色 border: false, // 是否显示描边 mode: 0, // 弹幕模式: 0表示滚动、1静止 }, { text: "222", time: 2, color: "red", border: true, mode: 0, }, { text: "333", time: 3, color: "green", border: false, mode: 1, }, ], speed: 5, // 弹幕持续时间,单位秒,范围在[1 ~ 10] opacity: 1, // 弹幕透明度,范围在[0 ~ 1] fontSize: 25, // 字体大小,支持数字和百分比 color: "#FFFFFF", // 默认字体颜色 mode: 0, // 默认模式,0-滚动,1-静止 margin: [10, "25%"], // 弹幕上下边距,支持数字和百分比 antiOverlap: true, // 是否防重叠 useWorker: true, // 是否使用 web worker synchronousPlayback: false, // 是否同步到播放速度 filter: (danmu) => danmu.text.length < 50, // 弹幕过滤函数,返回 true 则可以发送 lockTime: 5, // 输入框锁定时间,单位秒,范围在[1 ~ 60] maxLength: 100, // 输入框最大可输入的字数,范围在[0 ~ 500] minWidth: 200, // 输入框最小宽度,范围在[0 ~ 500],填 0 则为无限制 maxWidth: 400, // 输入框最大宽度,范围在[0 ~ Infinity],填 0 则为 100% 宽度 theme: "dark", // 输入框自定义挂载时的主题色,默认为 dark,可以选填亮色 light beforeEmit: (danmu) => !!danmu.text.trim(), // 发送弹幕前的自定义校验,返回 true 则可以发送 // 通过 mount 选项可以自定义输入框挂载的位置,默认挂载于播放器底部,仅在当宽度小于最小值时生效 // mount: document.querySelector('.artplayer-danmuku'), }), ], }); testAll(art, done); }); it("Test81", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", plugins: [ artplayerPluginDanmuku({ // 弹幕 XML 文件,和 Bilibili 网站的弹幕格式一致 danmuku: "./assets/sample/danmuku.xml", }), ], }); testAll(art, done); }); it("Test82", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", plugins: [ artplayerPluginDanmuku({ // 使用 Promise 异步返回 danmuku: function () { return new Promise((resovle) => { return resovle([ { text: "111", time: 1, }, { text: "222", time: 2, }, { text: "333", time: 3, }, ]); }); }, }), ], }); testAll(art, done); }); it("Test83", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", plugins: [ artplayerPluginDanmuku({ danmuku: "./assets/sample/danmuku.xml", }), ], controls: [ { position: "right", html: "隐藏弹幕", click: function () { art.plugins.artplayerPluginDanmuku.hide(); }, }, { position: "right", html: "显示弹幕", click: function () { art.plugins.artplayerPluginDanmuku.show(); }, }, ], }); testAll(art, done); }); it("Test84", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", plugins: [ artplayerPluginDanmuku({ danmuku: "./assets/sample/danmuku.xml", }), ], controls: [ { position: "right", html: "隐藏弹幕", click: function (_, event) { if (art.plugins.artplayerPluginDanmuku.isHide) { art.plugins.artplayerPluginDanmuku.show(); event.target.innerText = "隐藏弹幕"; } else { art.plugins.artplayerPluginDanmuku.hide(); event.target.innerText = "显示弹幕"; } }, }, ], }); testAll(art, done); }); it("Test85", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", plugins: [ artplayerPluginDanmuku({ danmuku: "./assets/sample/danmuku.xml", }), ], controls: [ { position: "right", html: "发送弹幕", click: function () { var text = prompt("请输入弹幕文本", "弹幕测试文本"); if (!text || !text.trim()) return; var color = "#" + Math.floor(Math.random() * 0xffffff).toString(16); art.plugins.artplayerPluginDanmuku.emit({ text: text, color: color, border: true, }); }, }, ], }); testAll(art, done); }); it("Test86", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", plugins: [ artplayerPluginDanmuku({ danmuku: "./assets/sample/danmuku.xml", }), ], controls: [ { position: "right", html: '弹幕大小:', style: { display: "flex", alignItems: "center", }, mounted: function ($setting) { const $range = $setting.querySelector("input[type=range]"); $range.addEventListener("change", () => { art.plugins.artplayerPluginDanmuku.config({ fontSize: Number($range.value), }); }); }, }, ], }); testAll(art, done); }); it("Test87", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", plugins: [ artplayerPluginDanmuku({ danmuku: "./assets/sample/danmuku.xml", }), ], controls: [ { position: "right", html: "重载弹幕", click: function () { art.plugins.artplayerPluginDanmuku.load(); }, }, { position: "right", html: "切换弹幕", click: function () { art.plugins.artplayerPluginDanmuku.config({ danmuku: "./assets/sample/danmuku-v2.xml", }); art.plugins.artplayerPluginDanmuku.load(); }, }, ], }); testAll(art, done); }); it("Test88", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", setting: true, plugins: [ artplayerPluginDanmuku({ danmuku: "./assets/sample/danmuku.xml", }), ], }); art.on("resize", () => { art.plugins.artplayerPluginDanmuku.reset(); }); testAll(art, done); }); it("Test89", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", setting: true, plugins: [ artplayerPluginDanmuku({ danmuku: "./assets/sample/danmuku.xml", }), ], }); art.on("ready", () => { console.log(art.plugins.artplayerPluginDanmuku.option); }); testAll(art, done); }); it("Test90", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", setting: true, plugins: [ artplayerPluginDanmuku({ danmuku: "./assets/sample/danmuku.xml", }), ], }); art.on("artplayerPluginDanmuku:emit", (danmu) => { console.info("新增弹幕", danmu); }); art.on("artplayerPluginDanmuku:loaded", (danmus) => { console.info("加载弹幕", danmus.length); }); art.on("artplayerPluginDanmuku:error", (error) => { console.info("加载错误", error); }); art.on("artplayerPluginDanmuku:config", (option) => { console.info("配置变化", option); }); art.on("artplayerPluginDanmuku:stop", () => { console.info("弹幕停止"); }); art.on("artplayerPluginDanmuku:start", () => { console.info("弹幕开始"); }); art.on("artplayerPluginDanmuku:hide", () => { console.info("弹幕隐藏"); }); art.on("artplayerPluginDanmuku:show", () => { console.info("弹幕显示"); }); art.on("artplayerPluginDanmuku:destroy", () => { console.info("弹幕销毁"); }); testAll(art, done); }); it("Test91", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", muted: true, }); art.on("ready", () => { art.play(); }); testAll(art, done); }); it("Test92", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", muted: true, }); art.on("ready", () => { art.play(); setTimeout(() => { art.pause(); }, 3000); }); testAll(art, done); }); it("Test93", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", muted: true, }); art.on("ready", () => { art.toggle(); setTimeout(() => { art.toggle(); }, 3000); }); testAll(art, done); }); it("Test94", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { art.seek = 5; }); testAll(art, done); }); it("Test95", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { art.forward = 5; }); testAll(art, done); }); it("Test96", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { art.seek = 5; setTimeout(() => { art.backward = 2; }, 3000); }); testAll(art, done); }); it("Test97", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { console.info(art.volume); art.volume = 0.5; console.info(art.volume); }); testAll(art, done); }); it("Test98", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { console.info(art.url); art.url = "./assets/sample/video.mp4?t=0"; console.info(art.url); }); testAll(art, done); }); it("Test99", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { art.seek = 10; setTimeout(() => { art.switchUrl("./assets/sample/video.mp4?t=0", "新视频名字"); }, 3000); }); testAll(art, done); }); it("Test100", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { art.seek = 10; setTimeout(() => { art.switchQuality("./assets/sample/video.mp4?t=0", "新视频地址"); }, 3000); }); testAll(art, done); }); it("Test101", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { console.info(art.muted); art.muted = true; console.info(art.muted); }); testAll(art, done); }); it("Test102", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { console.info(art.currentTime); art.currentTime = 5; console.info(art.currentTime); }); testAll(art, done); }); it("Test103", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { console.info(art.duration); }); testAll(art, done); }); it("Test104", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { art.seek = 10; art.once("video:canplay", () => { art.screenshot(); }); }); testAll(art, done); }); it("Test105", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { art.seek = 10; art.getDataURL().then((url) => console.info(url)); }); testAll(art, done); }); it("Test106", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { art.seek = 10; art.getBlobUrl().then((url) => console.info(url)); }); testAll(art, done); }); it("Test107", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", fullscreen: true, }); art.on("ready", () => { art.fullscreen = true; setTimeout(() => { art.fullscreen = false; }, 3000); }); testAll(art, done); }); it("Test108", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", fullscreenWeb: true, }); art.on("ready", () => { art.fullscreenWeb = true; setTimeout(() => { art.fullscreenWeb = false; }, 3000); }); testAll(art, done); }); it("Test109", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", fullscreenWeb: true, }); art.on("ready", () => { art.pip = true; setTimeout(() => { art.pip = false; }, 3000); }); testAll(art, done); }); it("Test110", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", poster: "./assets/sample/poster.jpg", }); art.on("ready", () => { console.info(art.poster); art.poster = "./assets/sample/poster.jpg?t=0"; console.info(art.poster); }); testAll(art, done); }); it("Test111", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { art.mini = true; }); testAll(art, done); }); it("Test112", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", muted: true, }); art.on("ready", () => { console.info(art.playing); art.play(); console.info(art.playing); }); testAll(art, done); }); it("Test113", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { console.info(art.autoSize); art.autoSize = true; console.info(art.autoSize); }); testAll(art, done); }); it("Test114", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { console.info(JSON.stringify(art.rect)); }); testAll(art, done); }); it("Test115", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { console.info(art.flip); art.flip = "horizontal"; console.info(art.flip); }); testAll(art, done); }); it("Test116", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { console.info(art.playbackRate); art.playbackRate = 2; console.info(art.playbackRate); }); testAll(art, done); }); it("Test117", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { console.info(art.aspectRatio); art.aspectRatio = "16:9"; console.info(art.aspectRatio); }); testAll(art, done); }); it("Test118", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { console.info(art.loop); art.loop = [5, 10]; console.info(art.loop); }); testAll(art, done); }); it("Test119", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { console.info(art.autoHeight); art.autoHeight = true; console.info(art.autoHeight); }); testAll(art, done); }); it("Test120", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { console.info(art.attr("playsInline")); art.attr("playsInline", true); console.info(art.attr("playsInline")); }); testAll(art, done); }); it("Test121", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { console.info(art.title); art.title = "新标题"; console.info(art.title); }); testAll(art, done); }); it("Test122", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { console.info(art.type); art.type = "m3u8"; console.info(art.type); }); testAll(art, done); }); it("Test123", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { console.info(art.theme); art.theme = "#000"; console.info(art.theme); }); testAll(art, done); }); it("Test124", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", controls: [ { name: "airplay", position: "right", html: "AirPlay", click: function () { art.airplay(); }, }, ], }); testAll(art, done); }); it("Test125", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", }); art.on("ready", () => { art.destroy(); }); testAll(art, done); }); it("Test126", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", controls: [ { position: "right", html: "Subtitle 01", selector: [ { default: true, html: 'Subtitle 01', url: "./assets/sample/subtitle.srt?id=1", }, { html: 'Subtitle 02', url: "./assets/sample/subtitle.srt?id=2", }, ], onSelect: function (item, $dom) { console.info(item, $dom); art.subtitle.url = item.url; return "你点击了 " + item.html; }, }, ], }); testAll(art, done); }); it("Test127", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", setting: true, }); art.on("ready", () => { art.layers.add({ name: "layer1", html: "your-layer", mounted: function ($layer1) { // }, }); art.contextmenu.add({ name: "contextmenu1", html: "your-contextmenu", mounted: function ($contextmenu1) { // }, }); art.controls.add({ name: "control1", html: "your-control", position: "right", mounted: function ($control1) { // }, }); // 使用查询 query 获取组件的DOM元素 var $layer1 = art.query(".art-layer-layer1"); var $contextmenu1 = art.query(".art-contextmenu-contextmenu1"); var $control1 = art.query(".art-control-control1"); // 推荐使用 name 获取组件的DOM元素 var $layer1 = art.layers["layer1"]; var $contextmenu1 = art.contextmenu["contextmenu1"]; var $control1 = art.controls["control1"]; }); testAll(art, done); }); it("Test128", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", setting: true, flip: true, playbackRate: true, aspectRatio: true, settings: [ { html: "选择字幕", width: 250, tooltip: "字幕 01", selector: [ { default: true, html: '字幕 01', url: "./assets/sample/subtitle.srt?id=1", }, { html: '字幕 02', url: "./assets/sample/subtitle.srt?id=2", }, ], onSelect: function (item, $dom, event) { console.info(item, $dom, event); art.subtitle.url = item.url; // 改变提示文本 return item.html; }, }, { html: "选择画质", width: 150, tooltip: "1080P", selector: [ { default: true, html: "1080P", url: "./assets/sample/video.mp4?id=1080", }, { html: "720P", url: "./assets/sample/video.mp4?id=720", }, { html: "360P", url: "./assets/sample/video.mp4?id=360", }, ], onSelect: function (item, $dom, event) { console.info(item, $dom, event); art.switchQuality(item.url, item.html); // 改变提示文本 return item.html; }, }, { html: "多层嵌套", selector: [ { html: "嵌套01", selector: [ { html: "嵌套02", }, { html: "嵌套02", }, ], }, { html: "嵌套01", selector: [ { html: "嵌套02", }, { html: "嵌套02", }, ], }, ], }, ], }); testAll(art, done); }); it("Test129", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", setting: true, flip: true, playbackRate: true, aspectRatio: true, settings: [ { html: "画中画模式", tooltip: "关闭", icon: '', switch: false, onSwitch: function (item, $dom, event) { console.info(item, $dom, event); const nextState = !item.switch; art.pip = nextState; // 改变提示文本 item.tooltip = nextState ? "开启" : "关闭"; // 改变按钮状态 return nextState; }, }, { html: "和列表组合", width: 200, selector: [ { default: true, html: "设置 01", }, { html: "设置 02", }, { html: "设置 03", switch: false, onSwitch: function (item, $dom, event) { return !item.switch; }, }, { html: "设置 04", icon: "", switch: true, onSwitch: function (item, $dom, event) { return !item.switch; }, }, ], onSelect: function (item) { return item.html; }, }, ], }); testAll(art, done); }); it("Test130", function (done) { var art = new Artplayer({ container: ".artplayer-app", url: "./assets/sample/video.mp4", setting: true, flip: true, playbackRate: true, aspectRatio: true, settings: [ { html: "滑块", tooltip: "5x", icon: '', range: [5, 1, 10, 1], onRange: function (item) { // 改变提示文本 return item.range + "x"; }, }, { html: "和列表组合", width: 200, selector: [ { default: true, html: "设置 01", }, { html: "设置 02", }, { html: "设置 03", tooltip: "5x", range: [5, 1, 10, 1], onRange: function (item) { return item.range + "x"; }, }, { html: "设置 04", icon: "", tooltip: "5x", range: [5, 1, 10, 1], onRange: function (item) { return item.range + "x"; }, }, ], onSelect: function (item) { return item.html; }, }, ], }); testAll(art, done); }); });