您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
基本实现了在bilibli的av页启用旧版播放器,剩下些布局问题和会跳转的av页问题
当前为
// ==UserScript== // @name 还我av页旧版播放器 // @namespace Motoori Kashin // @version 1.0 // @description 基本实现了在bilibli的av页启用旧版播放器,剩下些布局问题和会跳转的av页问题 // @author Motoori Kashin // @match *://*.bilibili.com/video/av* // @grant none // ==/UserScript== (function() { 'use strict'; window.stop(); // 收回前言jquery.1.7.4.js是通过定时器载入的,而且会取代重写引入的jquery.min.js,所以还是要清除 var highestTimeoutId = setTimeout(";"); for (var i = 0 ; i < highestTimeoutId ; i++) { clearTimeout(i);//清除所有定时器,防止后续Element载入 } const xhr = new XMLHttpRequest(); xhr.open('GET', window.location.href);// 返回新播放页,为重写提供可能需要的数据,不过貌似用不到 xhr.onload = () => { var html = xhr.responseText.replace(/<script\b[\s\S]*?<\/script>/g,"");// ---------------------清空所有<script>脚本 var a = html.replace(/<style\b[\s\S]*?<\/style>/g,"");// --------------------------------------清空所有<style>布局 a = a.replace(/<link\b[\s\S]*?>/g,"");// ------------------------------------------------------清空所有<link>引入的css布局 html = a.replace(/<body\b[\s\S]*?<\/body>/g,"<body>xxx</body>"); // ---------------------------清空<body>并用"xxx"占位,方便重写<body> // 同时引入了新av页css和旧稍后再看css修复布局,现在剩下播放器在up信息之上的问题 var wrh = '<script type="text/javascript">(function(){var ua=window.navigator.userAgent,agents=["Android","iPhone","SymbianOS","Windows Phone","iPod"],isPC=true;for(var i=0,len=agents.length;i<len;i++){if(ua.indexOf(agents[i])>0){isPC=false;break}}if(!isPC){var href=window.location.origin.replace("www","m")+"/video/"+window.location.href.match(/av([0-9]+)/g)[0]+".html"+window.location.search;window.location.href=href}})();</script><script type="text/javascript">window.spmReportData = {}window.reportConfig = { sample : 1, scrollTracker: true, msgObjects : ' + "'" + 'spmReportData' + "'" + ', errorTracker: true }</script>' + '<link rel="stylesheet" href="//s1.hdslb.com/bfs/static/jinkela/video/css/stardust-video.0.98c7582a48a04d7c48ad075c78ae33b16a816c7e.css">'+ '<link rel="stylesheet" href="//s1.hdslb.com/bfs/static/phoenix/viewlater/static/css/main.d9641d2f4dc42228ea8c2650e1b98b0b.css">'+ '<style type="text/css">.player{text-align: center;margin:0 auto;display: block;}</style></head>';// 使播放器居中 html = html.replace(/<\/head>/g,wrh); // 开始重写<body>,这里未调用任何新版播放页返回的数据直接写最基本框架来测试(去除了所有依赖av号数据的内容) var wrb = '<div class="z-top-container has-menu" type="all" style="height:263px"></div>'+// 新添加了版头,后面还添加了版尾 '<div id="video-page-app"></div>' + // 复写原生网页残留的两个函数,他们是导致播放器大小变化的罪魁祸首 '<script type="text/javascript">function getIEVersion(){};function setSize(){};</script>' + // 两个最基本的js脚本,第二个应该就是旧版播放器 '<script type="text/javascript" src="https://static.hdslb.com/js/jquery.min.js"></script>' + '<script type="text/javascript" src="https://static.hdslb.com/js/video.min.js"></script>' + '<div class="player-fix abs" id="bofqi">' + '<script type="text/javascript">' + // 似乎是载入旧版播放器的关键代码,取自2018年5月2日旧版av页同样位置,这里的缩进表示原来的标签层次 // 这里警告是因为原代码中带有混用了单双引号',这里把单引号重新用双引号",包起来使其不与赋值时用到的单引号'冲突,警告是说建议不要用加号+连接两个用单引号'框起来的字符串(因为直接写在一起就行,这里由于单引号冲突'只能用加号+) 'window.getInternetExplorerVersion=function(){var rv=-1;if(navigator.appName=="Microsoft Internet Explorer"){var ua=navigator.userAgent;var re=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");if(re.exec(ua)!=null){rv=parseFloat(RegExp.$1)}}return rv};function getQueryString(name){var reg=new RegExp("(^|&)"+name+"=([^&]*)(&|$)");var r=window.location.search.substr(1).match(reg);if(r!=null){return unescape(r[2])}return null}var vd=window.__INITIAL_STATE__&&window.__INITIAL_STATE__.videoData;if(vd&&vd.aid&&getInternetExplorerVersion()!==9){$("#__bofqi").innerHTML=' + "'" + '<div class="bili-wrapper" id="bofqi"><div id="player_placeholder"></div></div>' + "'" + ';if(vd.embedPlayer){var p=getQueryString("p")?getQueryString("p")-1:0;var player={aid:vd.aid,cid:(vd.pages[p]&&vd.pages[p].cid)||vd.pages[0].cid};EmbedPlayer("player","https://static.hdslb.com/play.swf","cid="+player.cid+"&aid="+player.aid+"&pre_ad=")}if(vd.embed){$("#bofqi").html(vd.embed)}}else{$("#bofqi").remove()};' + '</script>' + '</div>' + // 2018年5月2日旧版av页的主体部分,网页显示全部内容都在这个id="app"的div里,其中很多内容(后端直接写在网页里的)需要依赖上面新av页数据返回来修改(或者用api重新获取),这里为了测试删除了下级所有标签(包括上面那个关键脚本可能依赖的标签) // 在审查元素界面可以看到,自动生成了很多信息,包括视频信息和up信息 '<div id="app" data-server-rendered="true"></div><div class="footer bili-footer"></div><script type="text/javascript" src="//static.hdslb.com/common/js/footer.js"></script>'; // 用重写的<body>替换占位的"xxx" html = html.replace(/xxx/g,wrb); document.open(); document.write(html); document.close(); }; xhr.send(); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址