自研 - Acfun - 播放时自动网页全屏

视频播放时网页全屏,播放结束自动退出。

  1. // ==UserScript==
  2. // @name 自研 - Acfun - 播放时自动网页全屏
  3. // @name:en_US Self-made - Acfun - Playing auto WebFull
  4. // @description 视频播放时网页全屏,播放结束自动退出。
  5. // @description:en_US When the video plays, it automatically enters WebFull mode, and automatically exits this mode once the video concludes.
  6. // @version 1.0.1
  7. // @author CPlayerCHN
  8. // @license MulanPSL-2.0
  9. // @namespace https://www.gitlink.org.cn/CPlayerCHN
  10. // @match https://www.acfun.cn/v/*
  11. // @match https://www.acfun.cn/bangumi/*
  12. // @icon https://cdn.aixifan.com/ico/favicon.ico
  13. // @run-at document-end
  14. // @noframes
  15. // ==/UserScript==
  16.  
  17. (function() {
  18. 'use strict';
  19.  
  20. // 定义「网页标题」变量,「元素选择器」「body 元素含有类」函数。
  21. let title = document.title;
  22.  
  23. function $(elm) {
  24. return document.querySelector(elm);
  25. }
  26.  
  27. function playerStatus(match = /web|screen/) {
  28.  
  29. // 返回结果。
  30. return match.test($("#ACPlayer > .container-player").dataset.bindAttr);
  31.  
  32. }
  33.  
  34.  
  35. // 定义「元素监听」变量及其回调函数。
  36. const observer = new MutationObserver(() => {
  37.  
  38. // 定义「全屏按钮」变量。
  39. const full = $(".fullscreen.fullscreen-screen");
  40.  
  41. // 如果「全屏按钮」存在。
  42. if(full) {
  43.  
  44. // 定义「网页全屏按钮」「视频元素」变量。
  45. const web = $(".fullscreen.fullscreen-web"),
  46. video = $("video");
  47.  
  48. // 如果播放器不是网页全屏或全屏状态,就网页全屏。
  49. if(!playerStatus()) {
  50.  
  51. web.click();
  52.  
  53. }
  54.  
  55. // 监听视频播放。
  56. $("video").addEventListener("playing", () => {
  57.  
  58. // 如果「网页标题」和当前页面的不一致且播放器不是网页全屏或全屏状态,就更新「视频编号」变量后全屏。
  59. if(title !== document.title && !playerStatus()) {
  60.  
  61. title = document.title;
  62. web.click();
  63.  
  64. }
  65. });
  66.  
  67. // 监听视频暂停。
  68. $("video").addEventListener("pause", () => {
  69.  
  70. // 如果视频已经播放完成。
  71. if((video.duration - video.currentTime) <= 1) {
  72.  
  73. // 判断网播放器状态,如果视频网页全屏或全屏就退出它们。
  74. if(playerStatus(/web/)) {
  75.  
  76. web.click();
  77.  
  78. }else if(playerStatus(/screen/)) {
  79.  
  80. full.click();
  81.  
  82. }
  83.  
  84. }
  85.  
  86. });
  87.  
  88. // 中止「元素监听」。
  89. observer.disconnect();
  90.  
  91. }
  92. });
  93.  
  94. // 配置「元素监听」需要监听的元素和参数。
  95. observer.observe(document.body, {
  96. "childList": true,
  97. "subtree": true
  98. });
  99.  
  100. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址