上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
12
返回列表 发新帖
楼主: steven026 - 

更新v2 浏览器非活动标签中JS定时器最小定时间隔处理方法

[复制链接]

该用户从未签到

1

主题

4

回帖

93

积分

初级工程师

积分
93
发表于 2022-10-6 02:06:58 | 显示全部楼层
    <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[0]); // 转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 是唯一好用的方案。

回复
订阅

使用道具 举报

  • TA的每日心情
    开心
    2024-3-13 10:14
  • 签到天数: 211 天

    [LV.7]常住居民III

    293

    主题

    3898

    回帖

    3819

    积分

    管理员

    积分
    3819

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2022-12-2 11:04:08 | 显示全部楼层
    关于csp好像可以用GM_addElement越过,脚本猫在v0.11.0-beta.1开始支持
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。/ 微信公众号:一之哥哥
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 19:24
  • 签到天数: 631 天

    [LV.9]以坛为家II

    30

    主题

    535

    回帖

    1406

    积分

    荣誉开发者

    积分
    1406

    荣誉开发者新人进步奖油中2周年生态建设者新人报道挑战者 lv2油中3周年喜迎中秋

    发表于 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 但是过了这段时间就不行了
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-13 10:14
  • 签到天数: 211 天

    [LV.7]常住居民III

    293

    主题

    3898

    回帖

    3819

    积分

    管理员

    积分
    3819

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2022-12-2 15:01:17 | 显示全部楼层
    steven026 发表于 2022-12-2 14:40
    哥哥快想个办法让GM_addElement能添加Worker

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

    URL.createObjectURL用base64 url替换怎么样?
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。/ 微信公众号:一之哥哥
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 19:24
  • 签到天数: 631 天

    [LV.9]以坛为家II

    30

    主题

    535

    回帖

    1406

    积分

    荣誉开发者

    积分
    1406

    荣誉开发者新人进步奖油中2周年生态建设者新人报道挑战者 lv2油中3周年喜迎中秋

    发表于 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>都不行
    回复

    使用道具 举报

    12
    返回列表 发新帖

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表