您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
[腾讯|爱奇艺|优酷|乐视|芒果|AB站|音悦台]等VIP或会员视频,在线解析接口插件
// ==UserScript== // @name VIP会员视频在线解析大集合 // @namespace http://greasyfork.icu/zh-CN/users/505018 // @iconURL https://v.qq.com/favicon.ico // @version 1.0.6 // @description [腾讯|爱奇艺|优酷|乐视|芒果|AB站|音悦台]等VIP或会员视频,在线解析接口插件 // @author DreamFly // @noframes // @match http*://v.qq.com/x/cover/* // @match http*://*.iqiyi.com/v* // @match http*://v.youku.com/v_show/* // @match http*://*.le.com/* // @match http*://*.letv.com/* // @match http*://*.tudou.com/* // @match http*://*.mgtv.com/* // @match http*://film.sohu.com/* // @match http*://tv.sohu.com/* // @match http*://*.acfun.cn/v/* // @match http*://*.bilibili.com/* // @match http*://vip.1905.com/play/* // @match http*://*.pptv.com/* // @match http*://v.yinyuetai.com/video/* // @match http*://v.yinyuetai.com/playlist/* // @match http*://*.fun.tv/vplay/* // @match http*://*.wasu.cn/Play/show/* // @match http*://*.56.com/* // @exclude http*://*.bilibili.com/blackboard/* // @grant GM.getValue // @grant GM.setValue // @grant GM_getValue // @grant GM_setValue // @grant unsafeWindow // @grant GM_xmlhttpRequest // @grant GM.xmlHttpRequest // @grant GM_openInTab // @grant GM.openInTab // ==/UserScript== (function() { 'use strict'; const VQQIcon = '<svg height="1.2em" width="1.2em" viewbox="0 0 185 170"><defs><path id="vQQ" d="M7 20 Q14 -10 55 7 Q100 23 145 60 Q170 80 145 102 Q108 138 47 165 Q15 175 4 146 Q-5 80 7 20"></path></defs><use style="fill:#44B9FD;" transform="translate(27,0)" xlink:href="#vQQ"></use><use style="fill:#FF9F01;" transform="translate(0,18),scale(0.8,0.75)" xlink:href="#vQQ"></use><use style="fill:#97E61B;" transform="translate(23,18),scale(0.80.75)" xlink:href="#vQQ"></use><use style="fill:#fff;" transform="translate(50,45),scale(0.4)" xlink:href="#vQQ"></use></svg>'; const IQiyiIcon = '<svg xmlns="http://www.w3.org/2000/svg" x="0" y="0" width="12" height="12"><image width="12" height="12" x="0" y="0" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMEAYAAAAG5YCkAAAABGdBTUEAALGPC/xhBQAAACBjSFJN AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAA B3RJTUUH4wgJFC0QN86G4AAAA8FJREFUOMsFwX1MlHUAwPHv73meu5PjnWMSkSZYDHRuzj8UEbXN CudEQXQunAOzWnO1+V5BC5i6U7NcqPmW4cK0mSaWIYWJQbrKNSCiVGwnKHpyceDD2z33PPf8+nyE c/judTh3jQamQ2GZ7KALVJ/soxtA5tEDwBkeA6ARBqCIWABxjWcBRCI5AGI2z0NkKkX4of6kcMZ3 u8FUtZep13Zplme9OsPjh8Sl6s7EnyC6Rfkz5mlwbRVB5+dANhGRAeF+OdlogZG37byRKTDksvcN HYSBYqtt4DqEe8gyf7Y0kZx150psh5Tlucn5H3wI6XOV/Rn7QLetXL0XzDq5x/wM7DRZZieCXMYd uQTUcXFTBVwlSvuEzRC9RPW4C+DhXftgXwvsXDhQUd0JWmoueWmLIcFt3UisgOOr9DnHciA1yrE9 tQru9Zu7fT/AvQ7zG58B7iPKafdfoFVxWTsB+opIly5g2rDz9PTbULgvzrviCDzj4/CkvaCJ3Eir 2A4PDhiLHpyD/A1x8xaXQ/JsdifnQ/ze+OL4m9CxJxRoL4CYI+LNGBU8L2plHjfoL8iA/hqELlsF 4W0Q9bX6vdsBCRPF/oRaUBw75B5HMyQsUI2EcYhtZU7MGugtNk/dbwe73z4kN0L0CZke7YbRj6zV YzXwz9nR0VvLYEV03L8rl8B1j36q9SJMaBFRrpdAO2Ab2gNQ3CVybfS3MMXrqkyfBsph2a02AXX2 PO4DvfIWIcBvzweQbfKCXQu/TNNLW9PAVzxe6/NB++8jt9s6QZkrtyk5QE9kHYAS2RDZFCmHcZ/V O74Y+meFegOX4Lkapzb1PrjWYjjjYKzQzBkvhHC7NSncBU8qTNdQJvStNi48fAfGqqzvxtJhNGJO HTsKps9Ktx6Bps8xFj3JgsH1xuygA85/2b/1bBdMXCMcKQZk/u1uzUyCplf0vh+/AP1Xe7peDEPL ZdLgVdj1ru+r6hhwNyp/uL3wX6PRF6iB4KdGVrASNH9BKOzXwVpgLYy8Du95J22pOAPB49beoBfC Jfal8ElIb499I6MH5HzxvqwCx0bqHevAuVJsdh6FxAa1JakDAtmhmYFK8BeFmh/FgtDym7PBdDob I1tcqZrx1BQlLSUFkoJaadJGiKlVumN7wHVD2eTSgIWYzIJwtX0gvBqG6+yS4VIYfMs6HRwEf5P9 yeMGMPJVbyhoOYUj7aoK5yfLHXIAlsfJj6kBtdP+TW4DIA8vgDzGFQAkQQBRwioAmigHUGaKQwCi mlchMkMcFh64OPI/QLSjdm0wihoAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTktMDgtMTBUMDM6NDU6 MTYtMDc6MDBV2/HBAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE5LTA4LTEwVDAzOjQ1OjE2LTA3OjAw JIZJfQAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII="/></svg>'; const YoukuIcon = '<svg width="1.2em" height="1.2em" viewbox="0 0 72 72"><defs><circle id="youkuC1" r="5.5" style="stroke:none;;fill:#0B9BFF;"></circle><path id="youkuArow" d="m0,10 a5,5 0,0,1 0,-10 h20 a5,5 0,0,1 0,10z" style="fill:#FF4242;"></path></defs><circle cx="36" cy="36" r="30.5" style="stroke:#30B4FF;stroke-width:11;fill:none;"></circle><use x="10.5" y="19" xlink:href="#youkuC1"/><use x="61.5" y="53" xlink:href="#youkuC1"/><use x="39" y="1" transform="rotate(30)" xlink:href="#youkuArow"/><use x="-1" y="52" transform="rotate(-35)" xlink:href="#youkuArow"/></svg>'; var websites = [/qq.com/i, /iqiyi.com/i, /youku.com/i] var webIcons = [VQQIcon, IQiyiIcon, YoukuIcon] var icon = ''; for (let i in websites) { if (websites[i].test(location.href)) { icon = webIcons[i]; } } var defaultApi = { title: "618G,失效请更换接口", url: "http://jx.618g.com/?url=" }; //fixedApis name:显示的文字 url:接口 title:提示文字 embed:是否适合内嵌(true:内嵌 false:站外) var fixedApis = [ { name: "618G", url: "http://jx.618g.com/?url=", title: "618G", embed: false }, { name: "玩的嗨", url: "http://tv.wandhi.com/go.html?url=", title: "综合接口", embed: false }, { name: "搜你妹", url: "http://www.sonimei.cn/?url=", title: "综合接口", embed: false }, { name: "TIMERD", url: "https://timerd.me/static/cv.html?zwx=", title: "不稳定,广告过滤软件可能有影响", embed: false }, { name: "小小解析", url: "https://vip.parwix.com:4433/player/?url=", title: "手动点播放", embed: false }, { name: "乐乐云", url: "https://660e.com/?url=", title: "乐乐云,未知效果", embed: false }, { name: "全民解析", url: "https://z1.m1907.cn/?jx=", title: "全民解析", embed: false }, { name: "牛逼VIP", url: "https://www.5igen.com/dmplayer/player/?url=", title: "牛逼VIP", embed: false }, { name: "云2解析", url: "https://jx.yparse.com/index.php?url=", title: "综合,多线路", embed: false }, { name: "盘古视频解析", url: "https://www.pangujiexi.com/jiexi/?url=", title: "解析接口", embed: false }, { name: "诺讯智能解析", url: "https://www.nxflv.com/?url=", title: "解析接口", embed: false }, { name: "云解析", url: "https://jx.mw0.cc/?url=", title: "解析接口", embed: false }, { name: "1717云解析", url: "https://www.1717yun.com/jx/ty.php?url=", title: "解析接口", embed: false }, { name: "116看解析", url: "https://jx.116kan.com/?url=", title: "解析接口", embed: false }, { name: "云网解析", url: "https://www.41478.net/?url=", title: "云网解析", embed: false } ]; var cssStyle = ` #TMDF-VideoContainer1 { z-index: 2147483647; position: fixed; top: 7em; left: 5em; width: 75%; height: 800px; background: rgba(0, 0, 0, .7); box-shadow: 2px 2px 5px 5px rgba(125, 125, 250, .8); } #TMDF-VideoContainer2 { #width:100%; #height:100%; z-index:2147483647; } #TMDF-ClosePlayer { float: right; border: 0; padding: 0; margin-top: 0px; margin-right: 6px; cursor: pointer; visibility: hidden; font-size: 3em; color: rgba(125, 125, 250, 0.8); background: transparent; } #TMDF-ClosePlayer:hover { color: #ffffffff; } #TMDF-VideoContainer1:hover button { visibility: visible; } #TMDF-iframe-player { z-index: -1; position: absolute; top: 0; left: 0; border: 0; margin: auto; overflow: auto; } #TMDF-CustomApi li { margin: 5px; width: 100%; list-style-type: none; } #TMDF-ul { position: fixed; top: 5em; left: 1em; padding: 0; z-index: 999999; } #TMDF-ul li { list-style: none; } .TMDF-ul1 { position: absolute; top: 0; left: 2.5em; display: none; border-radius: .3em; margin: 0; padding: 0; } .TMDF-ul1 svg { float: right; } .TMDF-ul1 li { float: none; width: 8em; margin: 0; font-size: 1.2em; padding: .15em 1em; cursor: pointer; color: #3a3a3a!important; background: rgba(125, 125, 250, 0.8); } .TMDF-ul1 li:hover { color: white!important; background: rgba(0, 0, 0, .8); } .TMDF-ul1 li:first-child { border-radius: .35em .35em 0 0; } .TMDF-ul1 li:last-child { border-radius: 0 0 .35em .35em; } .TMDF-li1 { opacity: 0.5; position: relative; padding-right: .5em; width: 2.5em; cursor: pointer; text-align: center; } .TMDF-li1:hover { opacity: 1; } .TMDF-li1 span { display: block; border-radius: 3.5em; background-color: rgba(125, 125, 250, 1.0); border: 0; font: bold 1em "微软雅黑"!important; color: #3a3a3a; margin: 0; padding: 1em .3em; } .TMDF-li1:hover .TMDF-ul1 { display: block; } .TMDF-li2 { text-align: center; } .TMDF-p { position: fixed; top: 20%; left: 20%; z-index: 999999; background: rgba(125, 125, 250, 0.9); padding: 30px 20px 10px 20px; border-radius: 10px; text-align: left; } .TMDF-p * { font-size: 16px; font-family: '微软雅黑'; color: #3a3a3a; } .TMDF-p fieldset { margin: 0; padding: 10px; } .TMDF-p legend { padding: 0 10px; text-align: center; } .TMDF-p label { display: inline-block; } .TMDF-p input[type=text] { border-radius: 5px !important; border: 1px solid #3a3a3a; margin: 2px 10px 2px 5px; padding: 2px 5px; } .TMDF-p button { border: 1px solid #3a3a3a; border-radius: 5px; cursor: pointer; padding: 2px 10px; margin: 10px 20px 0 20px; } .TMDF-p button:hover { background: #3a3a3a; color: yellow; } .TMDF-text1 { width: 350px; } .TMDF-Close { position: absolute; top: 3px; left: 3px; margin: 0!important; } .TMDF-span80 { display: inline-block; text-align: right; width: 100px; } .TMDF-HName, .TMDF-Name { text-align: left; width:25%; } .TMDF-HLink { text-align: center; width: 45%; } .TMDF-Link { text-align: left; width: 45%; } .TMDF-HEmbed, .TMDF-Embed { text-align: center; width: 15%; } .TMDF-HDelete, .TMDF-Delete{ text-align: center; width: 15%; } .TMDF-Delete { color: red; cursor: pointer; } input[type=checkbox] { -webkit-appearance: checkbox; } li:hover .TMDF-Name, li:hover .TMDF-Link, li:hover .TMDF-Embed, li:hover .TMDF-Delete { background: rgba(73,163,230,0.62); } `; /* 兼容 Tampermonkey | Violentmonkey | Greasymonkey 4.0+ * 为了兼容GreasyMonkey 4.0 获取结构化数据,比如 json Array 等, * 应当先将字符串还原为对象,再执行后续操作 * GMgetValue(name,defaultValue) */ function GMgetValue(name, defaultValue) { if (typeof GM_getValue === 'function') { return GM_getValue(name, defaultValue); } else { return GM.getValue(name, defaultValue); } } /* 兼容 Tampermonkey | Violentmonkey | Greasymonkey 4.0+ * 为了兼容GreasyMonkey 4.0 储存结构化数据,比如 json Array 等, * 应当先将对象字符串化, * GMsetValue(name, JSON.stringify(defaultValue)) */ function GMsetValue(name, defaultValue) { if (typeof GM_setValue === 'function') { GM_setValue(name, defaultValue); } else { GM.setValue(name, defaultValue); } } /* 兼容 Tampermonkey | Violentmonkey | Greasymonkey 4.0+ */ function GMopenInTab(url, background) { if(typeof GM_openInTab === "function"){ GM_openInTab(url, background); }else{ GM.openInTab(url, background); } } /* 兼容 Tampermonkey | Violentmonkey | Greasymonkey 4.0+ */ function GMxmlhttpRequest(obj) { if (GM_xmlhttpRequest === "function") { GM_xmlhttpRequest(obj); } else { GM.xmlhttpRequest(obj); } } /* 兼容 Tampermonkey | Violentmonkey | Greasymonkey 4.0+ */ function GMaddStyle(cssText) { let doc = document.head || document.documentElement; let tag = document.createElement('style'); tag.textContent = cssText; doc.appendChild(tag); } //开启全屏的element调用,找到支持的方法 function launchFullScreen(element) { if (element.requestFullscreen) { element.requestFullscreen(); } else if (element.mozRequestFullScreen) { element.mozRequestFullScreen(); } else if (element.webkitRequestFullscreen) { element.webkitRequestFullscreen(); } else if (element.msRequestFullscreen) { element.msRequestFullscreen(); } } //创建视频播放窗口 function createVideoPlayer(parent) { //如果页面有播放窗口,只需更新播放窗口的 src, 如果没有播放窗口,读取播放窗口位置信息,新建一个播放窗 let iframeTag = document.querySelector('#TMDF-iframe-player'); if (iframeTag === null) { let divTag = document.createElement('div'); if (parent == undefined) { divTag.id = 'TMDF-VideoContainer1'; divTag.innerHTML = `<button id="TMDF-ClosePlayer" title="关闭">☒</button>`; divTag.innerHTML +=`<iframe id='TMDF-iframe-player' frameborder='0' allowfullscreen='true' width='100%' height='100%'></iframe>` document.body.appendChild(divTag); document.querySelector('#TMDF-ClosePlayer').addEventListener('click', () => { document.body.removeChild(document.querySelector('#TMDF-VideoContainer1')); return true; }, false); } else { divTag.id = 'TMDF-VideoContainer2'; divTag.innerHTML =`<iframe id='TMDF-iframe-player' frameborder='0' allowfullscreen='true' width='100%' height='100%'></iframe>` parent.appendChild(divTag); } } } //打开视频解析 function openVideoResolve(url, embed, func) { if (embed === true) { //创建页内播放窗口 if (typeof func === 'function'){ func(); } //内嵌页内播放 document.querySelector('#TMDF-iframe-player').setAttribute('src', url + location.href); } else { //不适合页内播放的,打开新标签 GMopenInTab(url + location.href); } } /* 保存按钮执行函数:获取值并 await GM.setValue() */ function getCustomUserApis() { let name = document.querySelector('#TMDF-name').value; let url = document.querySelector('#TMDF-url').value; let embed = document.querySelector('#TMDF-embed').checked ? 1 : 0; let customUserApis = []; if (name && url) { customUserApis.push({ name: name, url: url, embed: embed }); } let userApis = document.querySelectorAll('.TMDF-Link'); for (let i = 0; i < userApis.length; i++) { name = userApis[i].previousSibling.innerText; url = userApis[i].innerText; embed = userApis[i].nextSibling.nextSibling.checked ? '1' : '0'; customUserApis.push({ name: name, url: url, embed: embed }); } return customUserApis; } //添加自定义接口 function addCustomUserApi() { if (document.querySelector('#TMDF-name').value == '') { alert('添加解析接口名称不能为空'); return true } if (document.querySelector('#TMDF-url').value == '' || document.querySelector('#TMDF-url').value.indexOf('http') != 0) { alert('添加解析接口地址不能为空,必须以http或https开头,且符合url规范'); return true } let headHtml = `<li>`+ `<label class="TMDF-HName">接口名称</label>` + `<label class="TMDF-HLink">接口地址</label>` + `<label class="TMDF-HEmbed">内嵌本页</label>` + `<label class="TMDF-HDelete">操作</label></li>`; let checked = document.querySelector("#TMDF-embed").checked ? "checked" : ""; let liTag = document.createElement('li'); liTag.innerHTML = `<label class="TMDF-Name">${document.querySelector('#TMDF-name').value}</label>` + `<label class="TMDF-Link">${document.querySelector('#TMDF-url').value}</label>` + `<label class="TMDF-Embed"><input type="checkbox" ${checked}>内嵌</label>` + `<label class="TMDF-Delete" title="删除" onclick="document.getElementById('TMDF-CustomApi').removeChild(this.parentNode)">✘</label>`; if (document.querySelector('label[class=TMDF-Name]') === null) { let liTag1 = document.createElement('li'); liTag1.innerHTML = headHtml; document.querySelector('#TMDF-CustomApi').appendChild(liTag1); document.querySelector('#TMDF-CustomApi').appendChild(liTag); } else { document.querySelector('#TMDF-CustomApi').insertBefore(liTag, document.querySelector('label[class=TMDF-Name]').parentNode); } document.querySelector('#TMDF-name').value = ''; document.querySelector('#TMDF-url').value = ''; } /* 显示自定义接口面板 */ function showCustomApiPanel() { let innerHtml = `<button class="TMDF-Close" onclick="document.querySelector('#TMDF-CustomApi').style.display='none';">☒</button>` + `<legend>自定义解析接口</legend>` + `<li><span class="TMDF-span80">接口名称:</span><input type="text" id="TMDF-name" class="TMDF-text1" placeholder="显示的名称"></li>` + `<li><span class="TMDF-span80">接口地址:</span><input type="text" id="TMDF-url" class="TMDF-text1" placeholder="接口需要包含 http 或者 https 开头"></li>` + `<li><span class="TMDF-span80">内嵌本页:</span><label for="TMDF-embed" style=" margin-left: 1em;"><input type="checkbox" id="TMDF-embed"/>内嵌</label></li>` + `<li class="TMDF-li2">` + `<button id="TMDF-Test">测试</button>` + `<button id="TMDF-Add">增加</button>` + `<button id="TMDF-Save">保存</button>` + `</li>`; let headHtml = `<li>`+ `<label class="TMDF-HName">接口名称</label>` + `<label class="TMDF-HLink">接口地址</label>` + `<label class="TMDF-HEmbed">内嵌本页</label>` + `<label class="TMDF-HDelete">操作</label></li>`; try { let customUserApis = JSON.parse(GMgetValue('customUserApis', "[{}]")); if (customUserApis.length > 0 && customUserApis[0].name !== undefined) { innerHtml += headHtml; for (let i = 0; i < customUserApis.length; i++) { let checked = (customUserApis[i].embed === "1") ? 'checked' : ''; let html = `<li>` + `<label class="TMDF-Name">${customUserApis[i].name}</label>` + `<label class="TMDF-Link">${customUserApis[i].url}</label>` + `<label class="TMDF-Embed"><input type="checkbox" ${checked} >内嵌</label>` + `<label class="TMDF-Delete" title="删除" onclick="document.getElementById('TMDF-CustomApi').removeChild(this.parentNode)">✘</label>` + `</li>`; innerHtml += html } } } catch (e) {} let divTag = document.createElement('div'); divTag.id = 'TMDF-CustomApi'; divTag.setAttribute('class', 'TMDF-p'); divTag.innerHTML = innerHtml; document.body.appendChild(divTag); /*事件绑定*/ document.querySelector('#TMDF-Test').addEventListener('click', function() { let apiUrl = document.querySelector('#TMDF-url').value; if (apiUrl && apiUrl.match('^http')){ window.open(apiUrl + location.href); } else{ alert('测试无效,请先添加解析接口地址'); } }, false); //添加 document.querySelector('#TMDF-Add').addEventListener('click', function() { addCustomUserApi(); return true; }, false); //保存 document.querySelector('#TMDF-Save').addEventListener('click', function() { var customUserApis = getCustomUserApis(); GMsetValue('customUserApis', JSON.stringify(customUserApis)); console.log(customUserApis); alert('解析接口列表已保存'); }, false); } //查找播放窗口节点 function SearchPlayerNode(){ let match_nodes = [ { url:/v.qq.com/i, node:"#mod_player"}, { url:/www.iqiyi.com/i, node:"#flashbox" }] let player_node; for(let i in match_nodes) { if (match_nodes[i].url.test(location.href)) { let node = document.querySelector(match_nodes[i].node); if (node) { player_node = node; break; } } } return player_node } /* 显示解析界面 */ function showResolveApiPanel() { /*提供的接口列表*/ let apis = [...fixedApis]; //自定义接口列表 let customUserApis = JSON.parse(GMgetValue('customUserApis', "[{}]")); for (let i in customUserApis) { try { if (customUserApis[i].url !== null) { apis.push(customUserApis[i]); } } catch (e) { /*console.log(e);*/ } } let apisText = ''; for (let i in apis) { apisText += `<li data-order=${i} data-url="${apis[i].url}" data-embed=${apis[i].embed} title="${apis[i].title}">${apis[i].name + icon}</li>`; } let innerHtml = `<ul id="TMDF-ul">` + `<li class="TMDF-li1"><span id="TMDF-List" title="${defaultApi.title}" onclick="window.open(\'${defaultApi.url}\'+window.location.href)">解析</span>` + `<ul class="TMDF-ul1">${apisText}</ul></li>` + `<li class="TMDF-li1"><span id="TMDF-Setting" title="自定义解析设置">设置</span></li>` + `</ul>`; let divTag = document.createElement("div"); divTag.id = "TMDF-ResolveApi"; divTag.innerHTML = innerHtml; document.body.appendChild(divTag); //事件绑定 let apiList = document.querySelectorAll('.TMDF-ul1 li'); for (let x = 0; x < apiList.length; x++) { apiList[x].addEventListener('click', function(evt) { openVideoResolve(evt.target.dataset.url, JSON.parse(evt.target.dataset.embed), function(){ let player_node = SearchPlayerNode(); if (player_node) { player_node.innerHTML = ''; } createVideoPlayer(player_node); }); return true; }, false); } //设置自定义接口 document.querySelector("#TMDF-Setting").addEventListener('click', function(evt){ let apiPanel = document.querySelector('#TMDF-CustomApi'); if (apiPanel) { apiPanel.style.display = "block"; }else { showCustomApiPanel(); } return true; }, false); } /* 执行 */ function execute() { //添加css GMaddStyle(cssStyle); //显示界面 showResolveApiPanel(); } //调用执行 execute(); })();