Kished 发表于 2022-10-6 02:06:58

```html
    <div class="base64"></div>
    <script>
      console.log(new Date());
      setInterval(() => {
      setTimeout(() => {
          console.log(new Date().toTimeString());
      }, 500);
      }, 500);

      function genAudio(base64Video) {
      let audio = document.createElement('audio');
      audio.id = 'audio1';
      audio.loop = 'true';
      audio.autoplay = 'true';
      audio.controls = true;
      audio.src = base64Video;
      audio.volume = 0.5; // 最小值0.5
      return audio;
      }

      // 新键文件输入框元素
      const input = document.createElement('input');
      input.type = 'file';

      // 文件输入框插入位置
      document.querySelector('.base64').append(input);

      input.onchange = function () {
      const files = input.files; // e.target.files; // FileList
      const reader = new FileReader();
      reader.readAsDataURL(files); // 转Base64

      reader.onload = function () {
          console.log('base64 result:', reader.result);
          const video = genAudio(reader.result);
          // 音频插入位置
          document.querySelector('.base64').append(video);
      };
      };
    </script>
```

原来我之前用的循环播放视频没起作用。
实测循环播放音频方法有效,但不好用,会让标签显示正在播放音频,音量最低到0.5,耳机依然会有噪音。
Web worker 是唯一好用的方案。

王一之 发表于 2022-12-2 11:04:08

关于csp好像可以用GM_addElement越过,脚本猫在v0.11.0-beta.1开始支持

steven026 发表于 2022-12-2 14:40:51

zhege 王一之 发表于 2022-12-2 11:04
关于csp好像可以用GM_addElement越过,脚本猫在v0.11.0-beta.1开始支持
哥哥快想个办法让GM_addElement能添加Worker

【我之前想的办法是插件提前注入包含创建Worker的<script>标签
因为document_start的运行时机早于CSP的<meta>标签插入时机
也就是说document_start的时机还没有声明CSP,这个时候可以随意绕过CSP 但是过了这段时间就不行了

王一之 发表于 2022-12-2 15:01:17

steven026 发表于 2022-12-2 14:40
哥哥快想个办法让GM_addElement能添加Worker

【我之前想的办法是插件提前注入包含创建Worker的标签

URL.createObjectURL用base64 url替换怎么样?

steven026 发表于 2022-12-2 16:06:34

王一之 发表于 2022-12-2 15:01
URL.createObjectURL用base64 url替换怎么样?

我试过同样受CSP限制
CSP设了self 怎么都绕不过……别说src=XXX了,连没有src的只有textContent的<script>console.log(123)</script>都不行

李恒道 发表于 2024-9-23 12:52:24

搜来搜去又跑过来读一遍!
页: 1 [2]
查看完整版本: 更新v2 浏览器非活动标签中JS定时器最小定时间隔处理方法