视频全屏显示时间

因为大多数视频全屏后就看不到时间了,要看时间还得退出全屏,看到有的播放器全屏播放时可以在右上角显示一个系统当前时间,这种方式很不错,所以决定给视频网站也做一个这样的增强。这个脚本的作用只有一个,就是在视频左上角显示一个系统时间,方便全屏看视频期间随时了解时间。

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         视频全屏显示时间
// @namespace    http://tampermonkey.net/
// @namespace    https://www.medfav.com/webnav/
// @version      0.4.17
// @description  因为大多数视频全屏后就看不到时间了,要看时间还得退出全屏,看到有的播放器全屏播放时可以在右上角显示一个系统当前时间,这种方式很不错,所以决定给视频网站也做一个这样的增强。这个脚本的作用只有一个,就是在视频左上角显示一个系统时间,方便全屏看视频期间随时了解时间。
// @description  0.2.1 增加搜狐视频 0.2.2 增加mkv、mp4结尾的链接匹配,时间标签层级从3改为11 0.2.3增加YouTube支持
// @description  0.2.4 增加avi,mov,rmvb,webm,flv格式视频支持;修复带参数的视频链接播放时不显示时间;修复某些页面时间位置不在画面上的问题;
// @description  0.2.5 本次更新为时间标签添加了自由拖动功能,以解决某些视频网站视频右上角水印对时间显示产生干扰;0.2.6 紧急修复一个时间标签拖动的问题,影响0.2.5版,正在使用0.2.5版的尽快升级;0.2.7 修复拖动导致的一些问题 0.2.8 修复一些体验问题 0.2.9 修复拖动时间标签导致视频暂停的问题:
// @description  0.3.0 修复拖动的一些问题;添加 左上角/顶部中间/右上角 三个固定位置循环切换;添加恢复位置功能;0.3.1 修复标签位置调整的一些问题 0.3.2 小样式修复
// @description  0.3.3 移除拖动功能,拖动导致较多问题 0.3.4 修复一些显示问题 0.3.5 增加更多级别字体大小
// @description  0.3.6 增加设置弹框;增加顶部间距设置;增加字体大小设置;优化计时器字体宽度;0.3.7 修复设置界面样式,修改字体样式,添加www.bdys03.com支持;0.3.8 修正上一版为兼容MacOS字体导致Windows字体丑的问题 0.3.9 增加欧乐影院\AcFun\虎牙\斗鱼(标签位置有问题,请通过偏移处理)\YY(首页有遮盖问题,请调节位置解决)\抖音\快手\企鹅体育\芒果TV;增加了左右偏移设置;扩大了偏移范围
// @description  0.4.0 增加仅全屏显示计时器选项;百度网盘使用canvas播放视频,不支持(除非有办法替换成video标签播放);0.4.1 设置窗口允许自由拖动;设置窗口标题栏增加关闭按钮;适配秒懂百科; 0.4.2 修复B站首页Banner显示计时器问题 0.4.3 增加颜色和透明度自定义;增加时钟偏移;增加 hxzxer.com 网站支持; 0.4.4 修复时间格式支持 0.4.5 修复时区问题 0.4.6 修复设置窗口位置问题
// @description  0.4.7 增加隐藏时间条功能,修复潜在的问题;0.4.8 增加显示秒功能,修复一些问题;0.4.9 修复哔哩哔哩直播不显示时间标签;0.4.10 修复TrustedHTML问题 0.4.11 修复上一个版本引入TrustedHTML导致的浏览器兼容性问题 0.4.12 增加www.mxdm.xyz网站支持 0.4.13 增加描边支持 0.4.14 修改描边样式,使用内置 霞鹜文楷等宽 TC 字体 0.4.15 增加字体修改功能,修复字体描边无法保存问题
// @description  0.4.16 修复脚本在 YouTube 失效问题 0.4.17 修改设置中的颜色和透明度设置方法,更加便捷
// @author       medfav
// @match        *://www.tvyb03.com/*
// @match        *://lpl.qq.com/*
// @match        *://v.qq.com/*
// @match        *://live.qq.com/*
// @match        *://*.bilibili.com/*/*
// @match        *://*.bilibili.com/*?*
// @match        *://tv.cctv.com/*
// @match        *://www.mgtv.com/*
// @match        *://*.iqiyi.com/*
// @match        *://*.youku.com/*
// @match        *://*.le.com/*
// @match        *://weibo.com/*
// @match        *://*.sohu.com/*
// @match        *://*.youtube.com/*
// @match        *://*.acfun.cn/*
// @match        *://*.huya.com/*
// @match        *://*.douyu.com/*
// @match        *://*.yy.com/*
// @match        *://*.douyin.com/*
// @match        *://*.kuaishou.com/*
// @match        *://*.ixigua.com/*
// @match        *://*.gfysys1.com/*
// @match        *://*.buyaotou.xyz/*
// @match        *://*.bdys03.com/*
// @match        *://*.olevod.com/*
// @match        *://pan.baidu.com/*
// @match        *://baike.baidu.com/video*
// @match        *://hxzxer.com/*
// @match        *://danmu.yhdmjx.com/m3u8.php*
// @match        *://*/*.mkv*
// @match        *://*/*.mp4*
// @match        *://*/*.avi*
// @match        *://*/*.mov*
// @match        *://*/*.rmvb*
// @match        *://*/*.webm*
// @match        *://*/*.flv*
// @match        *://*/*.m3u8*
// @grant    GM_registerMenuCommand
// @grant    GM_setValue
// @grant    GM_getValue
// @icon         https://www.google.com/s2/favicons?sz=64&domain=qq.com
// @run-at       document-end
// @grant        unsafeWindow
// @license      GPLv3
// ==/UserScript==

(function() {
    'use strict';


    // 初始化字体
    var css = `
      @font-face {
        font-family: "LXGW WenKai Mono TC";
        src: url(data:font/woff2;base64,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) format("woff2");
      }
      @font-face {
        font-family: "HarmonyOS Sans SC Medium";
        src: url(data:font/woff2;base64,d09GMgABAAAAAAVsAAoAAAAAC8wAAAUhAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgkIKiACGPgsaAAE2AiQDMAQgBYh3BzobOgpRlExOl+zHQbmdzCKSDIkMCywwTRfv8LP4/q6/fzf7cyG1hKpnFajQEMRs2mCtY21XzPSJ6d8aT3wX+zN770iSICkui+Mo5gNMJU4ubRPQ68SoNdUBcpERZoPGRPkYc0FWwFji8WUNqEAyup/KOlEhK3WtquqCnoWVauYlfwCwurNLktr5fQJw2XegFzo1AFgrYJFkvtaZ5asLAID90ehAgKIcDbO/g+zNDoMAANp7ESAhAGzMXBYSAKiZUbgRQwLAKpQr5wcAlOn+8Aw7pACAVlB0qy7dU8z+DgDhcTwCRQCyAboB9MZZWIgF8SrfyDZvYF2Ew0kpqcnsWZiVUpaRhZDgDX+9xOe/RtM+Iha8gq9foeGP0LTX8q0voT1EYHiSP5QOHNT8UQrtuZcKflSo6hVMfen/CVeV9ARDx6q4HtwgHThyx4HdaI8RgAOOOKiLiBOIKDeCpG3jPfnI8Dh4vD/YnA4c/547uareOjHUTPjX5uXtIT55cgIzHgd95+FRjj0i2lE6dOMDfmJdrvOmrt1y+eu7B3kWqn6Bph2+j3/RjYbjdv/8u0e5do/4bTAaw3hoQ2HhzsqWjzohdz396nKmXREPvAQu4p/6NxQsm3x59KjJV86dn3x11Gi7/MLohdp5JpP+9y9arJ1vMurmLYE1H09kvhgUuTwAnql17V9ZfmTpLHX1AsVXQtplLg5Qhcz0ZkYboeUdRr12mC8Ej9z6FrNZHx0kNDKzG4p8AaooqBT13ljE1QQ04fK2PmabQUTdoURWTZGfKqqf4Gf0UUocVspoRgKPP+pu6d7cf7PBSfw/ot/eut4fBpzoVCv6Wxy6wYNVJvcIR4EtKPxHfxbwdpXr+dxSw57q+hqHrZdwUWcrXnzDVVYBE/aC2/sZzLqBQ9RmK/pPaAbZpH3b6tz7cses+ONGv8N3e+WN3P6eV/V+e9ztH/j899sCaWvrSxO+bnTKFHhVr4sadKrYIJndOVimjukMuui6j2ivSCINx2mDIUKLQlIR5T2z4T2+paJuH02vF1RswXv0kR3Gufzfjhz5R97weWmXuRC9PVitHWSTctvq3HtbnmnsMRd3dOvZjGVcnszLu6ZtOU/3KVhapvFLO8uSpSVrQoH+rlIAAACkf+joH791tGdef6ls9s8AfF22YL1N8RYGveeLynoHSMECAIAAe/t/B3DL9MqghVGVGmHdCXRaO42mVdN608w0iVWW9yP8pIEJAsChxAYAwIIhdag1VJCMYEAPGCCV9GBJ0Q62ap3AVFqGJISjSFbqAlIRXiNNb98gS1GSHs+WnHJsaEkDgKnogADRZgdYMvIN2IL5AqOtBUkKOgPJpF2HVAV9gjT2fpCFGrUbsnFG62ZJtftmqj2Iq7OPioxJ9LtJPsltFNSQ7pFxwYmhBGYb8VcbtJegLPMxJBMZnNbPmEibkRYJ6Tff1l6abzIA7VH6tQgFkmLjEiqCEBpCQ5Bkwpj6PYnAAkb0yWKyL5k/oc5piE+CyRBDjTNcP126jUSiUWhCtS5VGslulIgxEvohmSWM1k9MAlndI1CDSrqNFCcYbjDQQKSGJs0jQucljJAw3GgJEBW7iOEGGWKwcXwYJEbEYCPw801INkY0EWFPmD2Vcv2MMqgpYxduGtjAdDZDQrQgwXwj9Kt8FElCApIGp4TSUSpqFDWaUlVQQXP9kKzV1m+kERNlB6S+yCamdBBHU24WRcGHjS4EHBxvy5UnX4FCRYqVKFWmHAA=)) format("woff2");
      }
    `;
    var style = document.createElement('style');
    createEscapeHtmlElement(style, css);
    document.head.appendChild(style);

    // Your code here...
    // let timerInterval = 0;
    let fullShow = GM_getValue("fullShow");
    let hideTimeBar = GM_getValue("hideTimeBar");
    let showSecond = GM_getValue("showSecond");
    let pos = GM_getValue("pos");//左(0)、中(1)、右(2)
    let pos_top_space = GM_getValue("pos_top");//标签和顶部的距离
    let pos_transverse_space = GM_getValue("pos_transverse");//标签左右偏移
    let fontSize_min = GM_getValue("min_font");//最小
    let fontSize_small = GM_getValue("small_font");//小
    let fontSize_medium = GM_getValue("medium_font");//中等
    let fontSize_large = GM_getValue("large_font");//大
    let fontSize_max = GM_getValue("max_font");//最大
    let fontStyle = GM_getValue("font_style");//字体样式
    let fontColor = GM_getValue("font_color");//字体颜色
    let bgColor = GM_getValue("bg_color");//背景颜色
    let barOpacity = GM_getValue("bar_opacity");//时间标签整体透明度
    let timeOffset = GM_getValue("time_offset");//时间偏移
    let showStroke = GM_getValue("show_stroke");//启用字体描边,和背景色互斥
    let strokeColor = GM_getValue("stroke_color");//描边颜色
//     if(pos == undefined){
//         GM_setValue("pos",2);
//         pos = 2;
//     }
//     if(pos_top_space == undefined){
//         GM_setValue("pos_top",10);
//         pos_top_space = 10;
//     }
    // 初始化值
    fullShow = (fullShow == undefined)?false:fullShow;
    hideTimeBar = (hideTimeBar == undefined)?false:hideTimeBar;
    showSecond = (showSecond == undefined)?true:showSecond;
    pos = (pos == undefined)?2:pos;
    pos_top_space = (pos_top_space == undefined)?10:pos_top_space;
    pos_transverse_space = (pos_transverse_space == undefined)?0:pos_transverse_space;

    fontSize_min = (fontSize_min == undefined)?10:fontSize_min;
    fontSize_small = (fontSize_small == undefined)?10:fontSize_small;
    fontSize_medium = (fontSize_medium == undefined)?20:fontSize_medium;
    fontSize_large = (fontSize_large == undefined)?24:fontSize_large;
    fontSize_max = (fontSize_max == undefined)?28:fontSize_max;

    fontColor = (fontColor == undefined)?"#e6e6e6ff":fontColor;
    fontStyle = (fontStyle == undefined)?"LXGW WenKai Mono TC":fontStyle;
    bgColor = (bgColor == undefined)?"#0000004d":bgColor;
    barOpacity = (barOpacity == undefined)?1:barOpacity;
    timeOffset = (timeOffset == undefined)?8:timeOffset;
    showStroke = (showStroke == undefined)?false:showStroke;
    strokeColor = (strokeColor == undefined)?"#000000ad":strokeColor;

    let menu1 = GM_registerMenuCommand ("设置", openSetting, "");
    // // 计时器位置
    // var pos = 2;
    // // 计时器字体大小
    // var fontSize = 32;
    // // 计时器字体
    // var fontStyle = "微软雅黑";

    function openSetting() {
        var settingBox = document.querySelector("#vt-setting");
        if(settingBox){
            return;
        }
        var settingStyle = document.createElement("style");
        settingStyle.type="text/css";
        settingStyle.id="vt-classs";
        var settingStyleInner = `
        div#vt-setting {
            top: 200px;
            left: calc(100vw - 300px);
            width: 250px;
            border: 1px solid gray;
            position: absolute;
            display: block;
            z-index: 100000;
            margin: 0;
            padding: 0;
            border-radius: 6px;
            font-size: small;
            color: black;
            background-color: white;
        }
        #vts-title {
            background-color:gray;
            display: inline-block;
            width: 100%;
            border-top-left-radius: 5px;
            border-top-right-radius: 5px;
            padding: 3px 0px;
            text-align: center;
            color: white;
            cursor: move;
            hight: 20px;
            line-hight: 20px;
            user-select:none;
        }
        #vts-close-btn {
            right: 0px;top:
            0px;font-size: 17px;
            position: absolute;
            background-color: #d77c84;
            width: 44px;
            height: 26px;
            line-hight: 27px;
            border-top-right-radius: 5px;
            user-select:none;
        }
        #vts-close-btn:hover {
            background-color: #e81123;
            cursor: default;
        }
        #vts-pos input,#vts-general input {
            margin-right: 5px;
        }
        #vts-pos input:is(:nth-child(4),:nth-child(6)) {
            margin-left: 35px;
        }
        .vts-fieldset {
            border: 1px solid #c7c7c7;
            padding: 5px;
            margin: auto 5px;
        }
        .vts-fieldset>legend {
            font-size: small;
            color: gray;
            width: auto;
            padding: 0px 5px;
        }
        #vts-font input,#vts-pos-top,#vts-pos-transverse,#vts-font-style-name,#vts-color input {
            width: 110px;
            font-size: revert;
            outline: revert;
            border: revert;
            appearance: revert;
        }
        #vts-color input.vts-opacity-input-number {
            width: 38px;
        }
        #vts-color input.vts-input {
            width: 58px;
            height: 22px;
        }
        .vts-input-number,.vts-input,.vts-select {
            line-height: revert;
            appearance: revert;
            margin-top: 1px;
        }
        .vts-select {
            margin-top: 2px;
        }
        #vts-font select {
            width: 150px;
        }
        #vts-submit {
            margin-top: 10px;
            text-align: center;
        }
        #vts-submit>input {
            margin: 0;
            padding: 0 10px;
            appearance: auto;
            border: revert;
            border-radius: revert;
            background: revert;
            font-size: revert;
        }
        #vts-submit>input:not(:first-child) {
            margin-left: 20px;
        }
        #vts-save.disable {
            cursor: not-allowed;
            pointer-events: none;
            background-color: #c0c0c0;
            border-color: #8a8a8a;
            border-width: 1px;
            border-radius: 3px;
            color: azure;
            padding: 1px 10px;
        }
        #vts-tips {
            font-size: 13px;
            color: green;
            margin: 10px auto 5px 10px;
        }`;
        settingStyle.textContent = settingStyleInner;
        document.querySelector("head").appendChild(settingStyle);
        // CreateStyleElement("vt-classs", settingStyleInner, false)

        settingBox = document.createElement("div");
        settingBox.id = "vt-setting";
        var innerHtml = `<span id="vts-title">设置
        <span id="vts-close-btn">╳</span>
    </span>
    <div id="vts-general">
        <fieldset class="vts-fieldset">
            <legend>通用设置</legend>
            <input type="checkbox" name="show-full-screen" id="vts-general-check0">
            <label for="left">仅全屏时显示</label>
            <input type="checkbox" name="hide-time-bar" id="vts-general-check1">
            <label for="left">隐藏时间条</label><br>
            <input type="checkbox" name="show-second" id="vts-general-check2">
            <label for="left">显示秒</label>
            <input type="checkbox" name="show-stroke" id="vts-general-check3">
            <label for="left" title="显示描边的时候会“隐藏”背景颜色" >显示描边💬</label><br>
            <label title="时钟偏移,范围-12 ~ 14,单位小时">时钟偏移💬:</label><input type="number" name="time-offset" id="vts-time-offset"
                class="vts-input-number" min="-12" max="14" value="8">
        </fieldset>
    </div>
    <div id="vts-pos">
        <fieldset class="vts-fieldset">
            <legend>计时器位置</legend>
            <input type="radio" name="timer-position" id="vts-pos-radio0"><label for="left">左</label>
            <input type="radio" name="timer-position" id="vts-pos-radio1"><label for="left">中</label>
            <input type="radio" name="timer-position" id="vts-pos-radio2"><label for="left">右</label>
            <br><label for="fontSize">顶部距离:</label><input type="number" name="fontSize" id="vts-pos-top"
                class="vts-input-number" min="-1000" max="1000" value="10">
            <br><label for="fontSize">左右偏移:</label><input type="number" name="fontSize" id="vts-pos-transverse"
                class="vts-input-number" min="-2000" max="2000" value="10">
        </fieldset>
    </div>
    <div id="vts-font">
        <fieldset class="vts-fieldset">
            <legend>计时器字体</legend>
            <label title="视频画幅很小时,显示最小字体">最小💬:</label><input type="number" name="fontSize" id="vts-font-size-min"
                class="vts-input-number" min="9" max="99" value="10"><br>
            <label title="视频画幅小时,显示较小字体">较小💬:</label><input type="number" name="fontSize" id="vts-font-size-small"
                class="vts-input-number" min="9" max="99" value="10"><br>
            <label title="视频画幅一般大小时,显示一般大小字体">一般💬:</label><input type="number" name="fontSize"
                id="vts-font-size-medium" class="vts-input-number" min="9" max="99" value="20"><br>
            <label title="视频画幅大时,显示较大字体">较大💬:</label><input type="number" name="fontSize" id="vts-font-size-large"
                class="vts-input-number" min="9" max="99" value="24"><br>
            <label title="视频画幅很大时,显示最大字体">最大💬:</label><input type="number" name="fontSize" id="vts-font-size-max"
                class="vts-input-number" min="9" max="99" value="28"><br />
            <br style="display:none;" />
            <label for="fontStyle">字体:</label>
            <select name="fontStyle" class="vts-select" id="vts-font-style-name">
                <option value="LXGW WenKai Mono TC">霞鹜文楷</option>
                <option value="HarmonyOS Sans SC Medium">HarmonyOS Sans</option>
                <option value="Arial">系统(Arial)</option>
            </select>
        </fieldset>
    </div>
    <div id="vts-color">
        <fieldset class="vts-fieldset">
            <legend>颜色/透明度</legend>
            <label title="文字颜色: CSS支持的所有颜色格式(命名(如:Red、Green、Blue等),hex,rgb,hsl,lch)">前景色💬:</label><input type="color" name="font-color" id="vts-font-color"
                class="vts-input" size="9" maxlength="30" value="#e1e1e1"><label title="文字透明度0~255">透明度:</label><input type="number" name="font-opacity" id="vts-font-opacity"
                class="vts-opacity-input-number" step="1" min="0" max="255" value="255"><br>
            <label title="背景颜色: CSS支持的所有颜色格式(命名(如:Red、Green、Blue等),hex,rgb,hsl,lch)">背景色💬:</label><input type="color" name="bg-color" id="vts-bg-color"
                class="vts-input" size="9" maxlength="30" value="#000000"><label title="背景透明度0~255">透明度:</label><input type="number" name="bg-opacity" id="vts-bg-opacity"
                class="vts-opacity-input-number" step="1" min="0" max="255" value="77"><br>
            <label title="描边颜色: CSS支持的所有颜色格式(命名(如:Red、Green、Blue等),hex,rgb,hsl,lch)">描边色💬:</label><input type="color" name="stroke-color" id="vts-stroke-color"
                class="vts-input" size="9" maxlength="30" value="#000000"><label title="描边透明度0~255">透明度:</label><input type="number" name="stroke-opacity" id="vts-stroke-opacity"
                class="vts-opacity-input-number" step="1" min="0" max="255" value="255"><br>
            <label title="整体透明度(范围0-1,可以为小数)">透明度💬:</label><input type="number" name="opacity" id="vts-opacity"
                class="vts-input-number" step="0.05" min="0" max="1" value="1"><br>
        </fieldset>
    </div>
    <div id="vts-submit">
        <input id="vts-save" type="button" value="保存">
        <input id="vts-close" type="button" value="关闭">
        <input id="vts-reset" type="button" value="重置">
    </div>
    <div id="vts-tips">Tips:点击保存记住设置</div>`;

        createEscapeHtmlElement(settingBox, innerHtml);
        //const escapeHTMLPolicy = getEscapeHTMLPolicy();
        //if (escapeHTMLPolicy != undefined ) {
        //    var escaped  = getEscapeHTMLPolicy().createHTML(innerHtml);
        //    settingBox.innerHTML = escaped;
        //} else {
        //    settingBox.innerHTML = innerHtml;
        //}
        document.querySelector("body").appendChild(settingBox);
        // 添加事件
        document.querySelector("#vts-general-check0").addEventListener("change",function(){radioChange(this.checked,'check')});
        document.querySelector("#vts-general-check1").addEventListener("change",function(){radioChange(this.checked,'hidetimebar')});
        document.querySelector("#vts-general-check2").addEventListener("change",function(){radioChange(this.checked,'showSecond')});
        document.querySelector("#vts-general-check3").addEventListener("change",function(){radioChange(this.checked,'show-stroke')});
        document.querySelector("#vts-pos-radio0").addEventListener("change",function(){radioChange(0,'radio')});
        document.querySelector("#vts-pos-radio1").addEventListener("change",function(){radioChange(1,'radio')});
        document.querySelector("#vts-pos-radio2").addEventListener("change",function(){radioChange(2,'radio')});
        document.querySelector("#vts-pos-top").addEventListener("input",function(){radioChange(this.value,'top')});
        document.querySelector("#vts-pos-transverse").addEventListener("input",function(){radioChange(this.value,'transverse')});
        document.querySelector("#vts-font-size-min").addEventListener("input",function(){radioChange(this.value,'fontsize-min')});
        document.querySelector("#vts-font-size-small").addEventListener("input",function(){radioChange(this.value,'fontsize-small')});
        document.querySelector("#vts-font-size-medium").addEventListener("input",function(){radioChange(this.value,'fontsize-medium')});
        document.querySelector("#vts-font-size-large").addEventListener("input",function(){radioChange(this.value,'fontsize-large')});
        document.querySelector("#vts-font-size-max").addEventListener("input",function(){radioChange(this.value,'fontsize-max')});

        document.querySelector("#vts-font-color").addEventListener("input",function(){radioChange(this.value,'font-color')});
        document.querySelector("#vts-font-opacity").addEventListener("input",function(){radioChange(this.value,'font-opacity')});
        document.querySelector("#vts-font-style-name").addEventListener("input",function(){radioChange(this.value,'font-style')});
        document.querySelector("#vts-bg-color").addEventListener("input",function(){radioChange(this.value,'bg-color')});
        document.querySelector("#vts-bg-opacity").addEventListener("input",function(){radioChange(this.value,'bg-opacity')});
        document.querySelector("#vts-stroke-color").addEventListener("input",function(){radioChange(this.value,'stroke-color')});
        document.querySelector("#vts-stroke-opacity").addEventListener("input",function(){radioChange(this.value,'stroke-opacity')});
        document.querySelector("#vts-opacity").addEventListener("input",function(){radioChange(this.value,'opacity')});

        document.querySelector("#vts-time-offset").addEventListener("input",function(){radioChange(this.value,'timeoffset')});

        document.querySelector("#vts-save").addEventListener("click",vtsSaveSetting);
        document.querySelector("#vts-close").addEventListener("click",vtsClose);
        document.querySelector("#vts-close-btn").addEventListener("click",vtsClose);
        document.querySelector("#vts-reset").addEventListener("click",vtsResetSetting);
        initSetting();
        // 使设置窗口可拖动:
        dragElement(document.getElementById("vt-setting"));
    }

    // 转换为可信元素
    function getEscapeHTMLPolicy() {
        if (window.trustedTypes && trustedTypes.createPolicy) {
            return trustedTypes.createPolicy("myEscapePolicy", {
                createHTML: (string) => string,
            });
        }
        return undefined;
    }

    // 创建可信元素
    function createEscapeHtmlElement(boxElement, htmlText) {
        const escapeHTMLPolicy = getEscapeHTMLPolicy();
        if (escapeHTMLPolicy != undefined ) {
            var policyElement  = getEscapeHTMLPolicy().createHTML(htmlText);
            boxElement.innerHTML = policyElement;
        } else {
            boxElement.innerHTML = htmlText;
        }
        return boxElement;
    }

    // 初始化设置界面
    function initSetting() {
        document.querySelector("#vts-general-check0").checked = fullShow;
        document.querySelector("#vts-general-check1").checked = hideTimeBar;
        document.querySelector("#vts-general-check2").checked = showSecond;
        document.querySelector("#vts-general-check3").checked = showStroke;
        switch (pos) {
            case 0:
                document.querySelector("#vts-pos-radio0").checked = true;
                break;
            case 1:
                document.querySelector("#vts-pos-radio1").checked = true;
                break;
            case 2:
                document.querySelector("#vts-pos-radio2").checked = true;
        }
        document.querySelector("#vts-pos-top").value = pos_top_space;
        document.querySelector("#vts-pos-transverse").value = pos_transverse_space;
        document.querySelector("#vts-font-size-min").value = fontSize_min;
        document.querySelector("#vts-font-size-small").value = fontSize_small;
        document.querySelector("#vts-font-size-medium").value = fontSize_medium;
        document.querySelector("#vts-font-size-large").value = fontSize_large;
        document.querySelector("#vts-font-size-max").value = fontSize_max;
        //document.querySelector("#vts-font-size-number").value = fontSize;
        document.querySelector("#vts-font-style-name").value = fontStyle;
        document.querySelector("#vts-font-color").value = fontColor.substring(0,7);
        document.querySelector("#vts-font-opacity").value = parseInt(fontColor.substring(7),16);
        document.querySelector("#vts-bg-color").value = bgColor.substring(0,7);
        document.querySelector("#vts-bg-opacity").value = parseInt(bgColor.substring(7),16);
        document.querySelector("#vts-opacity").value = barOpacity;
        document.querySelector("#vts-time-offset").value = timeOffset;
        document.querySelector("#vts-stroke-color").value = strokeColor.substring(0,7);
        document.querySelector("#vts-stroke-opacity").value = parseInt(strokeColor.substring(7),16);
    }

    var tempPos = 0;
    function radioChange(params,type) {
        if(type=="check") {
            fullShow = params;
        }
        if(type=="hidetimebar") {
            hideTimeBar = params;
        }
        if(type=="showSecond") {
            showSecond = params;
        }
        if(type=="show-stroke"){
            showStroke = params;
        }
        if(type=="radio") {
            pos = params;
        }
        if(type=="font-style") {
            fontStyle = params;
        }
        if (type=="top") {
            if ((params < -1000 || params > 1000)) {
                document.querySelector("#vts-save").classList.add("disable");
            } else {
                pos_top_space = Number(params);
                document.querySelector("#vts-save").classList.remove("disable");
            }
        }
        if (type=="transverse") {
            if ((params < -2000 || params > 2000)) {
                document.querySelector("#vts-save").classList.add("disable");
            } else {
                pos_transverse_space = Number(params);
                document.querySelector("#vts-save").classList.remove("disable");
            }
        }
        if (type=="number") {
            if ((params < 9 || params > 99)) {
                document.querySelector("#vts-save").classList.add("disable");
            } else {
                document.querySelector("#vts-save").classList.remove("disable");
            }
        }
        if (type.indexOf("fontsize")==0) {
            if ((params < 9 || params > 99)) {
                document.querySelector("#vts-save").classList.add("disable");
            } else {
                switch (type) {
                    case "fontsize-min":
                        fontSize_min = params;
                        break;
                    case "fontsize-small":
                        fontSize_small = params;
                        break;
                    case "fontsize-medium":
                        fontSize_medium = params;
                        break;
                    case "fontsize-large":
                        fontSize_large = params;
                        break;
                    case "fontsize-max":
                        fontSize_max = params;
                }
                fontStyle = "微软雅黑";//字体样式
                document.querySelector("#vts-save").classList.remove("disable");
            }
        }
        if (type.indexOf("color")>0) {
            if ( isColor(params) ) {
                switch (type) {
                    case "font-color":
                        fontColor = params + fontColor.substring(7);
                        break;
                    case "bg-color":
                        bgColor = params + bgColor.substring(7);
                        break;
                    case "stroke-color":
                        strokeColor = params + strokeColor.substring(7);
                        break;
                }
                document.querySelector("#vts-save").classList.remove("disable");
            } else {
                document.querySelector("#vts-save").classList.add("disable");
            }
        }
        if (type.indexOf("opacity")>0) {
            if (params < 0) {
                document.querySelector("#vts-save").classList.add("disable");
                params = 0;
            } else if (params > 255) {
                document.querySelector("#vts-save").classList.add("disable");
                params = 255;
            }
            switch (type) {
                case "opacity":
                    if (params < 0 || params > 1 ) {
                        if (params > 1) {
                            document.querySelector("#vts-save").classList.add("disable");
                            barOpacity = 1;
                        }
                    } else {
                        barOpacity = params;
                        document.querySelector("#vts-save").classList.remove("disable");
                    }
                    break;
                case "font-opacity":
                    fontColor = fontColor.substring(0,7) + (parseInt(params)<16 ? "0" + parseInt(params).toString(16) : parseInt(params).toString(16));
                    break;
                case "bg-opacity":
                    bgColor = bgColor.substring(0,7) + (parseInt(params)<16 ? "0" + parseInt(params).toString(16) : parseInt(params).toString(16));
                    break;
                case "stroke-opacity":
                    strokeColor = strokeColor.substring(0,7) + (parseInt(params)<16 ? "0" + parseInt(params).toString(16) : parseInt(params).toString(16));
                    break;
            }
        }
        if (type == "timeoffset") {
            if (params < -12 || params > 14 || params % 1 != 0 ) {
                document.querySelector("#vts-save").classList.add("disable");
            } else {
                timeOffset = params;
                document.querySelector("#vts-save").classList.remove("disable");
            }
        }
    }

    // 保存按钮
    function vtsSaveSetting() {
        //pos = tempPos;
        GM_setValue("fullShow",fullShow);
        GM_setValue("hideTimeBar",hideTimeBar);
        GM_setValue("showSecond",showSecond);
        GM_setValue("show_stroke",showStroke);
        GM_setValue("pos",pos);
        GM_setValue("pos_top",pos_top_space);
        GM_setValue("pos_transverse",pos_transverse_space);
        GM_setValue("min_font",fontSize_min);
        GM_setValue("small_font",fontSize_small);
        GM_setValue("medium_font",fontSize_medium);
        GM_setValue("large_font",fontSize_large);
        GM_setValue("max_font",fontSize_max);

        GM_setValue("font_color",fontColor);
        GM_setValue("font_style",fontStyle);
        GM_setValue("bg_color",bgColor);
        GM_setValue("bar_opacity",barOpacity);

        GM_setValue("time_offset",timeOffset);
        GM_setValue("stroke_color",strokeColor);

        //fontSize = document.querySelector("#vts-font-size-number").value;
        // fontStyle = document.querySelector("#vts-font-style-name").value;

        let textTips1 = "Tips:保存成功!";
        let textTips2 = "Tips:再次保存成功!";
        let currentText = document.querySelector("#vts-tips").innerText;
        if(currentText == textTips1) {
            document.querySelector("#vts-tips").innerText = textTips2;
        } else {
            document.querySelector("#vts-tips").innerText = textTips1;
        }
    }
    // 取消按钮
    function vtsClose() {
        var settingBox = document.querySelector("#vt-setting");
        var settingStyle = document.querySelector("#vt-classs");
        if(settingBox){
            settingBox.parentNode.removeChild(settingBox);
        }
        if(settingStyle){
            settingStyle.parentNode.removeChild(settingStyle);
        }
    }
    // 重置按钮
    function vtsResetSetting() {
        fullShow = false;
        hideTimeBar = false;
        showSecond = true;
        showStroke = false;
        pos = 2;
        pos_top_space = 10;
        pos_transverse_space = 0;
        fontSize_min = 10;//最小
        fontSize_small = 10;//小
        fontSize_medium = 20;//中等
        fontSize_large = 24;//大
        fontSize_max = 28;//最大
        //fontSize = 32;
        fontStyle = "LXGW WenKai Mono TC";
        fontColor = "#e6e6e6ff";
        bgColor = "#0000004d";
        barOpacity = 1;
        timeOffset = 8;
        strokeColor = "#000000ad";

        initSetting();
        document.querySelector("#vts-tips").innerText = "已重置为默认,点击“保存”记住设置!";
        //vtsClose();
    }
     /**
     * [isFullscreen 判断浏览器是否全屏]
     * @return [全屏则返回当前调用全屏的元素,不全屏返回false]
     */
    function isFullscreen(){
        return document.fullscreenElement    ||
               document.msFullscreenElement  ||
               document.mozFullScreenElement ||
               document.webkitFullscreenElement || false;
    }

    // 创建时间标签,width:视频宽度,用于设置时间数字大小
    function createTag(element){
        let style = "z-index: 101;/*color: #e1e1e1;*/margin:5px;padding: 5px;border-radius: 4px;line-height: 0.8em;/*background-color: #0000004d;opacity: 0.8;*/user-select: none;/*text-shadow: 1px 1px 2px black, -1px -1px 2px black;*/height: min-content;/*font-family:LXGW WenKai Mono TC,Arial;font-weight:400;*/letter-spacing:0px;/*pointer-events: none;*/";
        let videoWidth = element.offsetWidth;
        let videoTop = element.offsetTop;
        let videoLeft = element.offsetLeft;
        let space = 10;
        let fontSize = 10;
        let tagWidth = 50;
        if(videoWidth >= 1700){
            space = 10;
            fontSize = fontSize_max;
            tagWidth = 120;
        } else if(videoWidth >= 1200){
            space = 10;
            fontSize = fontSize_large;
            tagWidth = 104;
        } else if(videoWidth >= 720){
            space = 10;
            fontSize = fontSize_medium;
            tagWidth = 77;
        } else if(videoWidth <= 200){
            space = 5;
            fontSize = fontSize_min;
            tagWidth = 50;
        } else {
            space = 10;
            fontSize = fontSize_small;
            tagWidth = 50;
        }
        style += "font-size: "+fontSize+"px;top: " + (videoTop + pos_top_space) + "px;";
        style += "color: " + fontColor + ";opacity: " + barOpacity + ";";
        style += (fontStyle=="Arial" ? "font-family: Arial" : "font-family:" + fontStyle + ", Arial;");
        if (showStroke) {
            //style += "-webkit-text-stroke: 1px " + strokeColor + ";background-color: none;font-weight:400;"
            style += "text-shadow: 1px 1px 0px " + strokeColor + ",-1px -1px 0px " + strokeColor + ",-1px 1px 0px " + strokeColor + ",1px -1px 0px " + strokeColor + ";background-color: none;font-weight:400;"
        } else {
            style += "background-color: " + bgColor + ";font-weight:400;"
        }
        switch(pos) {
            case 0:
                style += "position: absolute;left: " + videoLeft + pos_transverse_space + space + "px;";
                break;
            case 1:
                style += "position: absolute;left: " + videoLeft + pos_transverse_space + ((videoWidth - tagWidth)/2) + "px;";
                break;
            case 2:
                style += "position: absolute;right: " + videoLeft + pos_transverse_space + space + "px;";
                break;
        }
        let timeBar = document.createElement("div");
        timeBar.className = "timer";
        timeBar.style = style;
        timeBar.title = "点击可临时隐藏时间条";
        // CreateStyleElement("timerbar-style", ".timer {" + style + "}", true);
        return timeBar;
    }

    // 改变时间标签样式
    function changeTag(element){
        let fullScreenElement = isFullscreen();
//         let settingElement = document.body.querySelector("#vt-setting");
//         if(fullScreenElement != false && settingElement != undefined) {
//             let fullScrSetting = fullScreenElement.querySelector("#vt-setting");
//             if(fullScrSetting == undefined){
//                 fullScreenElement.querySelector(".timer").parentElement.appendChild(settingElement);
//             } else {
//                 fullScreenElement.remove();
//             }
//         }
        if((fullScreenElement == false && fullShow == true) || hideTimeBar == true){
            element.parentElement.querySelector(".timer").style.display = "none";
            return;
        } else {
            element.parentElement.querySelector(".timer").style.display = "unset";
        }
        let videoTop = element.offsetTop;
        let videoLeft = element.offsetLeft;
        if(element.offsetWidth > 200){
            if(element.offsetWidth >= 1700){
                element.parentElement.querySelector(".timer").style.fontSize = fontSize_max + "px";
            }else if(element.offsetWidth >= 1200){
                element.parentElement.querySelector(".timer").style.fontSize = fontSize_large + "px";
            } else if(element.offsetWidth >= 720){
                element.parentElement.querySelector(".timer").style.fontSize = fontSize_medium + "px";
            } else if(element.offsetWidth <= 200) {
                element.parentElement.querySelector(".timer").style.fontSize = fontSize_min + "px";
            } else {
                element.parentElement.querySelector(".timer").style.fontSize = fontSize_small + "px";
            }
            // element.previousSibling.style.top = videoTop + 10 + "px";
            // element.previousSibling.style.right = videoLeft + 10 + "px";
        } else {
            // element.previousSibling.style.top = videoTop + 5 + "px";
            // element.previousSibling.style.right = videoLeft + 5 + "px";
        }
        // 改变字体
        element.parentElement.querySelector(".timer").style.fontFamily = (fontStyle=="Arial" ? "Arial" : fontStyle + ", Arial");
        // 改变颜色和透明度
        element.parentElement.querySelector(".timer").style.color = fontColor;
        if (showStroke) {
            //element.parentElement.querySelector(".timer").style.webkitTextStroke  = "1px " + strokeColor;
            element.parentElement.querySelector(".timer").style.textShadow  = "1px 1px 0px " + strokeColor + ",-1px -1px 0px " + strokeColor + ",-1px 1px 0px " + strokeColor + ",1px -1px 0px " + strokeColor;
            element.parentElement.querySelector(".timer").style.fontWeight = "400";
            element.parentElement.querySelector(".timer").style.backgroundColor = "unset";
        } else {
            element.parentElement.querySelector(".timer").style.backgroundColor = bgColor;
            element.parentElement.querySelector(".timer").style.fontWeight = "400";
            //element.parentElement.querySelector(".timer").style.removeProperty("-webkit-text-stroke");
            element.parentElement.querySelector(".timer").style.removeProperty("text-shadow");
        }
        element.parentElement.querySelector(".timer").style.opacity = barOpacity;

        changePos(element);
    }

    function changePos(videoTag){
        let videoTop = videoTag.offsetTop;
        let videoLeft = videoTag.offsetLeft;
        let videoWidth = videoTag.offsetWidth;
        let space = 10;
        if(videoWidth <= 200){
            space = 5;
        } else {
            space = 10;
        }
        videoTag.parentElement.querySelector(".timer").style.top = (videoTop + pos_top_space) + "px";
        // videoTag.previousSibling.style.marginTop = space + "px";
        switch(pos) {
            case 0:
                videoTag.parentElement.querySelector(".timer").style.removeProperty("right");
                //videoTag.previousSibling.style.position = 'absolute';
                videoTag.parentElement.querySelector(".timer").style.left = videoLeft + pos_transverse_space + space + "px";
                break;
            case 1:
                videoTag.parentElement.querySelector(".timer").style.removeProperty("right");
                //videoTag.previousSibling.style.position = 'unset';
                videoTag.parentElement.querySelector(".timer").style.left = videoLeft + pos_transverse_space + ((videoWidth - videoTag.parentElement.querySelector(".timer").offsetWidth)/2) + "px";
                break;
            case 2:
                videoTag.parentElement.querySelector(".timer").style.removeProperty("left");
                //videoTag.previousSibling.style.position = 'absolute';
                videoTag.parentElement.querySelector(".timer").style.right = videoLeft + pos_transverse_space + space + "px";
                break;
        }
    }

    // 获取Video标签
    function getVideoTag(){
        setTimeout(()=>{
            let videoTagList = Array.from(document.getElementsByTagName('video'));
            if(videoTagList.length == 0){
                getVideoTag();
            } else {
                insertTimeBar(videoTagList);
                // setTimer();
                getVideoTag();
            }
        },1000)
    }
    getVideoTag();

    // 加入时间标签
    function insertTimeBar(videoTagList){
        videoTagList.forEach((element)=>{
            if (element.parentElement.querySelector(".timer") == null ){
                // 多个时间条不能用同一个对象
                let timeBar = createTag(element);
                // 给时间标签添加事件
                addElementEvent(timeBar);
                element.parentElement.insertBefore(timeBar,element);
            } else {
                changeTag(element);
            }
        })
    }

    // 给元素添加事件
    function addElementEvent(element){
        element.onmouseover = function(even) {
            even.stopPropagation();
        }
        element.onmousemove = function(even) {
            even.stopPropagation();
        }
        element.onmouseenter = function(even) {
            even.stopPropagation();
        }
        //点击时临时隐藏时间条
        element.onclick = function(even) {
            even.stopPropagation();
            hideTimeBar = true;
            element.style.display = "none";
        }
    }

    // 设置计时器
    function setTimer(){
        // clearInterval(timerInterval);
        // timerInterval =
        setInterval(()=>{
            var date = new Date(Date.now() + (new Date().getTimezoneOffset() + (timeOffset * 60)) * 60 * 1000);
            // var hour = date.getHours();
            // var min = date.getMinutes()>9?date.getMinutes():'0' + date.getMinutes();
            // var sec = date.getSeconds()>9?date.getSeconds():'0' + date.getSeconds();
            let timer = document.getElementsByClassName("timer");
            // 当没有时间条时,添加(懒加载会出现这种情况)
            if(timer == undefined){
                let videoTagList = Array.from(document.getElementsByTagName('video'));
                insertTimeBar(videoTagList);
            }
            // 给每一个时间条设置时间
            let timeBarList = Array.from(document.getElementsByClassName("timer"));
            timeBarList.forEach((timeBar)=>{
                timeBar.innerText = showSecond ? formatDateTime(date, "H:mm:ss") : formatDateTime(date, "H:mm");
            })
        },1000)
    }
    // 启动计时器
    setTimer();

    function formatDateTime(date, format) {
        const o = {
            'M+': date.getMonth() + 1, // 月份
            'd+': date.getDate(), // 日
            'h+': date.getHours() % 12 === 0 ? 12 : date.getHours() % 12, // 小时
            'H+': date.getHours(), // 小时
            'm+': date.getMinutes(), // 分
            's+': date.getSeconds(), // 秒
            'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
            S: date.getMilliseconds(), // 毫秒
            a: date.getHours() < 12 ? '上午' : '下午', // 上午/下午
            A: date.getHours() < 12 ? 'AM' : 'PM', // AM/PM
        };
        if (/(y+)/.test(format)) {
            format = format.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
        }
        for (let k in o) {
            if (new RegExp('(' + k + ')').test(format)) {
                format = format.replace(
                    RegExp.$1,
                    RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)
                );
            }
        }
        return format;
    }

    // 提示框,调用方法:Toast('提示:好用记得点赞哦!',1000);
    let dialog;
    let timer;
    function Toast(msg,duration){
        if(timer != null && dialog != null){
            clearTimeout(timer);
            document.body.removeChild(dialog);
            dialog = null;
        }
        duration=isNaN(duration)?3000:duration;
        dialog = document.createElement('div');
        dialog.innerText = msg;
        dialog.style.cssText="font-size:.32rem;color:green;background-color:white;border:solid green 2px;padding:10px 15px;margin:0 0 0 -60px;border-radius:4px;position:fixed;top:2%;left:93%;/*width:200px;*/text-align:left;z-index:9999";
        document.body.appendChild(dialog);
        timer = setTimeout(function() {
            document.body.removeChild(dialog);
            dialog = null;
        }, duration);
    }

    // 移动设置窗口
    function dragElement(elmnt) {
        var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
        var originalonmousemove = null, originalonmouseup = null;
        if (document.getElementById("vts-title")) {
            // 如果存在,标题是您从中移动 DIV 的位置:
            document.getElementById("vts-title").onmousedown = dragMouseDown;
            // 防止在子元素上拖动
            document.getElementById("vts-title").children.onmousedown = function(){};
        } else {
            // 否则,从 DIV 内的任何位置移动 DIV:
            elmnt.onmousedown = dragMouseDown;
        }
        elmnt.onmouseup = closeDragElement;

        function dragMouseDown(e) {
            e = e || window.event;
            if(e.target.id == "vts-close-btn"){
                return;
            }
            e.preventDefault();
            // 在启动时获取鼠标光标位置:
            pos3 = e.clientX;
            pos4 = e.clientY;
            // 记录原事件
            originalonmousemove = document.onmousemove;
            originalonmouseup = document.onmouseup;
            // 每当光标移动时调用一个函数:
            document.onmousemove = elementDrag;
            document.onmouseup = closeDragElement;
        }

        function elementDrag(e) {
            e = e || window.event;
            e.preventDefault();
            // 计算新的光标位置:
            pos1 = pos3 - e.clientX;
            pos2 = pos4 - e.clientY;
            pos3 = e.clientX;
            pos4 = e.clientY;
            // 设置元素的新位置:
            elmnt.style.top = (elmnt.offsetTop - pos2) + "px";
            elmnt.style.left = (elmnt.offsetLeft - pos1) + "px";
        }

        function closeDragElement() {
            // 释放鼠标按钮时停止移动:
            // document.onmousemove = null;
            // document.onmouseup = null;
            // 释放鼠标按钮时停止移动,还原原事件
            document.onmousemove = originalonmousemove;
            document.onmouseup = originalonmouseup;
        }
    }

    function CreateStyleElement(id, cssText, isUpdate){
        var styleElement = document.getElementById(id);
        if (styleElement == undefined) {
            // 创建一个新的 <style> 元素
            styleElement = document.createElement("style");
            styleElement.id = id;

            // 创建包含 CSS 规则的文本
            // var cssText = ".highlight { background-color: yellow; }"
            var cssTextNode = document.createTextNode(cssText);

            // 将文本添加到 <style> 元素中
            styleElement.appendChild(cssTextNode);

            // 将 <style> 元素添加到网页的 <head> 元素中
            document.head.appendChild(styleElement);
        } else {
            if (isUpdate) {
                styleElement.innerText = cssText;
            }
        }
    }

    function isColor(strColor) {
        const s = new Option().style;
        s.color = strColor;
        return s.color !== '';
    }
})();