自动网页全屏播放

自动网页全屏播放,已支持Bilibili,腾讯视频

  1. // ==UserScript==
  2. // @name 自动网页全屏播放
  3. // @namespace https://blog.xlab.app/
  4. // @more https://github.com/ttttmr/UserJS
  5. // @version 0.9
  6. // @description 自动网页全屏播放,已支持Bilibili,腾讯视频
  7. // @author tmr
  8. // @match https://www.bilibili.com/video/av*
  9. // @match https://www.bilibili.com/bangumi/play/ss*
  10. // @match https://www.bilibili.com/bangumi/play/ep*
  11. // @match https://v.qq.com/x/page/*
  12. // @match https://v.qq.com/x/cover/*
  13. // @grant none
  14. // ==/UserScript==
  15.  
  16. (function () {
  17. 'use strict';
  18. let counter = 0;
  19. function fullscreen() {
  20. console.log('web fullscreen start');
  21. webFull();
  22. function webFull() {
  23. console.log('web fullscreen ing ' + counter);
  24. counter++;
  25. let fullscreenClass;
  26. if (location.host == 'www.bilibili.com') {
  27. fullscreenClass = '.bilibili-player-video-web-fullscreen';
  28. } else if (location.host == 'v.qq.com') {
  29. fullscreenClass = '.txp_btn_fake';
  30. }
  31. if (fullscreenClass) {
  32. // 尝试全屏
  33. if (document.querySelector(fullscreenClass)) {
  34. // 网页全屏
  35. document.querySelector(fullscreenClass).click();
  36. console.log('web fullscreen success');
  37. // 重置计数
  38. counter = 0;
  39. // 移除监听
  40. document.removeEventListener('visibilitychange', fullscreen);
  41. }
  42. // 失败并重试
  43. else {
  44. // 超过30次就退出
  45. if (counter > 30) {
  46. console.log('web fullscreen fail');
  47. return;
  48. }
  49. // 延迟0.5秒重试
  50. setTimeout(webFull, 500);
  51. }
  52. }
  53. }
  54. }
  55. clickVideoLink();
  56. function clickVideoLink() {
  57. window.onclick = function (mClick) {
  58. let mClickElement = mClick.target;
  59. // 视频链接
  60. let videoUrlList;
  61. // 视频Class
  62. let videoClassList;
  63. if (location.host == 'www.bilibili.com') {
  64. videoUrlList = [
  65. 'https://www.bilibili.com/video/av',
  66. 'https://www.bilibili.com/bangumi/play/ss',
  67. 'https://www.bilibili.com/bangumi/play/ep',
  68. ];
  69. videoClassList = [
  70. 'bilibili-player-ending-panel-box-recommend-cover',
  71. 'bilibili-player-ending-panel-box-recommend',
  72. 'ep-title',
  73. 'ep-item',
  74. ];
  75. } else if (location.host == 'v.qq.com') {
  76. videoUrlList = ['https://v.qq.com/x/page/'];
  77. videoClassList = [];
  78. }
  79. // 优先Class处理
  80. videoClassList.forEach(function (videoClass) {
  81. if (mClickElement.classList.contains(videoClass)) {
  82. fullscreen();
  83. return;
  84. }
  85. });
  86. // 链接处理
  87. let mClickElementTmp = mClickElement;
  88. // 判断是否是a标签的子元素
  89. while (mClickElementTmp) {
  90. // 元素是a标签
  91. if (mClickElementTmp.tagName == 'A') {
  92. // 新tab打开不处理
  93. if (mClickElementTmp.target == '_blank') {
  94. break;
  95. } else {
  96. // 循环判断链接
  97. videoUrlList.some(function (videoUrl) {
  98. if (String(mClickElementTmp.href).indexOf(videoUrl) == 0) {
  99. fullscreen();
  100. return true;
  101. }
  102. });
  103. break;
  104. }
  105. }
  106. // 不是a标签就循环父级元素
  107. else {
  108. mClickElementTmp = mClickElementTmp.parentElement;
  109. }
  110. }
  111. };
  112. }
  113. window.addEventListener('load', function () {
  114. // 判断后台打开
  115. if (document.visibilityState == 'hidden') {
  116. console.log('now hidden, wait visible');
  117. document.addEventListener('visibilitychange', fullscreen);
  118. }
  119. // 前台打开,直接直行
  120. else {
  121. fullscreen();
  122. }
  123. });
  124. })();

QingJ © 2025

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