歡迎蒞臨

歡迎蒞臨是一個微軟 Edge 瀏覽器的擴充功能,能自動允許使用者加入 Google Meet 會議。

  1. // ==UserScript==
  2. // @name Welcome
  3. // @name:zh-TW 歡迎蒞臨
  4. // @name:zh-CN 歡迎蒞臨
  5. // @namespace veringsek
  6. // @match http://meet.google.com/*
  7. // @match https://meet.google.com/*
  8. // @grant none
  9. // @version 0.0.6
  10. // @author veringsek
  11. // @description Welcome is a Microsoft Edge Extension to automatically accept when people request to join your Google Meet meeting.
  12. // @description:zh-TW 歡迎蒞臨是一個微軟 Edge 瀏覽器的擴充功能,能自動允許使用者加入 Google Meet 會議。
  13. // @description:zh-CN 歡迎蒞臨是一個微軟 Edge 瀏覽器的擴充功能,能自動允許使用者加入 Google Meet 會議。
  14. // ==/UserScript==
  15.  
  16. function ScanningProcess(actions) {
  17. this.actions = actions;
  18. this.stage = 0;
  19. this.runner = null;
  20. }
  21. ScanningProcess.prototype.run = function () {
  22. if (this.stage >= this.actions.length) return false;
  23. let action = this.actions[this.stage];
  24. this.runner = setInterval(() => {
  25. if (action.func()) {
  26. clearInterval(this.runner);
  27. this.stage += 1;
  28. this.run();
  29. }
  30. }, action.duration);
  31. return true;
  32. };
  33.  
  34. function toggleWelcome(welcome) {
  35. if (welcome === undefined) {
  36. globalThis.welcome = !globalThis.welcome;
  37. } else {
  38. globalThis.welcome = welcome;
  39. }
  40. let icnWelcome = document.getElementById('icnWelcome');
  41. let btnWelcome = document.getElementById('btnWelcome');
  42. let tipWelcome = document.getElementById('tipWelcome');
  43. if (globalThis.welcome) {
  44. console.log(`Welcome is on.`);
  45. document.getElementById('svgWelcomeOn').style.display = '';
  46. document.getElementById('svgWelcomeOff').style.display = 'none';
  47. btnWelcome.style.background = ``;
  48. tipWelcome.innerHTML = 'Everyone is welcomed to this meeting now.';
  49. } else {
  50. console.log(`Welcome is off.`);
  51. document.getElementById('svgWelcomeOff').style.display = '';
  52. document.getElementById('svgWelcomeOn').style.display = 'none';
  53. btnWelcome.style.background = `#ea4335`;
  54. tipWelcome.innerText = 'Permission is needed to join this meeting.';
  55. }
  56. }
  57.  
  58. const DIV_BUTTONS = 'R5ccN';
  59. const TARGET = 3;
  60.  
  61. globalThis.sp = new ScanningProcess([{
  62. func: function () {
  63. let divButtons;
  64. try {
  65. divButtons = document.getElementsByClassName(DIV_BUTTONS)[0];
  66.  
  67. let divWelcome = divButtons.children[TARGET].cloneNode(true);
  68. let btnWelcome = divWelcome.getElementsByTagName('button')[0];
  69. btnWelcome.id = 'btnWelcome';
  70. btnWelcome.addEventListener('click', ev => toggleWelcome());
  71. btnWelcome.setAttribute('data-tooltip-id', 'tipWelcome');
  72.  
  73. let icnGoogleMaterial = divWelcome.getElementsByTagName('i')[0];
  74. icnGoogleMaterial.style.display = 'none';
  75.  
  76. let icnWelcome = document.createElement('span');
  77. icnWelcome.id = 'icnWelcome';
  78.  
  79. let svgWelcomeOff = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
  80. svgWelcomeOff.id = 'svgWelcomeOff';
  81. svgWelcomeOff.style.display = 'none';
  82. svgWelcomeOff.setAttribute('viewBox', '0 0 576 512');
  83. let pathWelcomeOff = document.createElementNS('http://www.w3.org/2000/svg', 'path');
  84. pathWelcomeOff.setAttribute('d', `M560 448H480V50.75C480 22.75 458.5 0 432 0h-288C117.5 0 96 22.75 96 50.75V448H16C7.125 448 0 455.1 0 464v32C0 504.9 7.125 512 16 512h544c8.875 0 16-7.125 16-16v-32C576 455.1 568.9 448 560 448zM384 288c-17.62 0-32-14.38-32-32s14.38-32 32-32s32 14.38 32 32S401.6 288 384 288z`);
  85. svgWelcomeOff.appendChild(pathWelcomeOff);
  86. icnWelcome.appendChild(svgWelcomeOff);
  87.  
  88. let svgWelcomeOn = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
  89. svgWelcomeOn.id = 'svgWelcomeOn';
  90. svgWelcomeOn.style.display = 'none';
  91. svgWelcomeOn.setAttribute('viewBox', '0 0 576 512');
  92. let pathWelcomeOn = document.createElementNS('http://www.w3.org/2000/svg', 'path');
  93. pathWelcomeOn.setAttribute('d', `M560 448H512V113.5c0-27.25-21.5-49.5-48-49.5L352 64.01V128h96V512h112c8.875 0 16-7.125 16-15.1v-31.1C576 455.1 568.9 448 560 448zM280.3 1.007l-192 49.75C73.1 54.51 64 67.76 64 82.88V448H16c-8.875 0-16 7.125-16 15.1v31.1C0 504.9 7.125 512 16 512H320V33.13C320 11.63 300.5-4.243 280.3 1.007zM232 288c-13.25 0-24-14.37-24-31.1c0-17.62 10.75-31.1 24-31.1S256 238.4 256 256C256 273.6 245.3 288 232 288z`);
  94. svgWelcomeOn.appendChild(pathWelcomeOn);
  95. icnWelcome.appendChild(svgWelcomeOn);
  96.  
  97. let tipWelcome = divWelcome.querySelector('*[role=tooltip]');
  98. tipWelcome.id = 'tipWelcome';
  99.  
  100. icnGoogleMaterial.parentElement.insertBefore(icnWelcome, icnGoogleMaterial);
  101.  
  102. divButtons.insertBefore(divWelcome, divButtons.children[TARGET]);
  103.  
  104. toggleWelcome(false);
  105. return true;
  106. } catch (error) {
  107. console.log(error);
  108. return false;
  109. }
  110. },
  111. duration: 1000
  112. }, {
  113. func: function () {
  114. if (!globalThis.welcome) return false;
  115. try {
  116. let btnAccept = document.querySelector('*[role=dialog]')?.getElementsByTagName('button')[1];
  117. if (btnAccept.getAttribute('data-mdc-dialog-action') === 'accept') {
  118. btnAccept.click();
  119. }
  120. } catch {
  121. return false;
  122. }
  123. },
  124. duration: 500
  125. }]);
  126. globalThis.sp.run();

QingJ © 2025

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