Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

退出全屏之后,播放器不是宽屏

About: 哔哩哔哩(bilibili.com)播放器调整
edited April 19 in Script Discussions Firefox
RT

Comments

  • Adx123 said:

    自动定位 应该定位到标题那里

    脚本设置里面
    可以设置偏移位置,往上或往下移(播放器顶端位置(或视频顶端位置)是参照)来达到定位到标题那里。
    Adx123 said:

    退出全屏之后,播放器不是宽屏

    不用脚本的时候也是这样的(网页全屏和全屏退出后都会恢复到默认模式),是特性不是bug。
    还是说?希望增加在脚本开启“网页全屏”和“自动宽屏”的时候,退出全屏后恢复到宽屏模式的功能?
  • mickey7q7 said:

    Adx123 said:

    自动定位 应该定位到标题那里

    脚本设置里面
    可以设置偏移位置,往上或往下移(播放器顶端位置(或视频顶端位置)是参照)来达到定位到标题那里。
    Adx123 said:

    退出全屏之后,播放器不是宽屏

    不用脚本的时候也是这样的(网页全屏和全屏退出后都会恢复到默认模式),是特性不是bug。
    还是说?希望增加在脚本开启“网页全屏”和“自动宽屏”的时候,退出全屏后恢复到宽屏模式的功能?
    看了下不用脚本 退出全屏播放 也不是宽屏
    希望能增加 退出全屏 也是宽屏的效果
  • Adx123 said:



    看了下不用脚本 退出全屏播放 也不是宽屏
    希望能增加 退出全屏 也是宽屏的效果

    功能试着写了一下,
    现在虽然能用,但是实现的方式有点不好,和之前脚本的其他功能还有冲突
    所以另外写了个脚本,先用着,等搞好了再合并到之前的脚本里吧。

    Greasemonkey 里面新建一个脚本,把下面的粘贴进去,看看能不能用吧。(退出全屏不要用 Esc 键 ,回车键是全屏退出,ctrl + 回车键 是网页全屏退出。)
    // ==UserScript==
    // @name 哔哩哔哩(bilibili.com)视频页退出全屏后自动宽屏
    // @namespace https://greasyfork.org/zh-CN/forum/discussion/21974/
    // @description 视频页退出全屏后自动宽屏
    // @include http*://www.bilibili.com/video/av*
    // @include http*://bangumi.bilibili.com/anime/*/play*
    // @version 0.1
    // @grant none
    // @run-at document-end
    // ==/UserScript==
    (function () {
    'use strict';
    function init() {
    var widescreen = true;
    var webFullScreen;
    var timerCount = 0;
    var timer = window.setInterval(function callback() {
    var readyState = isBangumi('.bilibili-player-video-panel').getAttribute('style');
    if (readyState.search("display: none;") !== -1 ) {
    var fullscreen = isBangumi('div[name="browser_fullscreen"]');
    var fullscreenClone = fullscreen.cloneNode(true);
    fullscreen.setAttribute('style', 'display:none');

    var element = isBangumi('.bilibili-player-video-control');
    element.appendChild(fullscreenClone);

    var fullscreenFun = function(){
    var browser_fullscreen = isBangumi('i[name="browser_fullscreen"]');
    if (browser_fullscreen.getAttribute('data-text') === '进入全屏') {
    widescreen = true;
    }
    if(!widescreen){
    doClick(fullscreen.querySelector('i[name="browser_fullscreen"]'));
    }else{
    doClick(fullscreen.querySelector('i[name="browser_fullscreen"]'));
    doClick(isBangumi('i[name="widescreen"]'));
    }
    };
    fullscreenClone.querySelector('i[name="browser_fullscreen"]').addEventListener("click", fullscreenFun, false);

    var webFullscreenFun = function(){
    if (document.body.className.search("player-fullscreen-fix") === -1 ) {
    widescreen = true;
    }
    if(!widescreen){
    doClick(fullscreen.querySelector('i[name="web_fullscreen"]'));
    }else{
    webFullScreen = false;
    if (document.body.className.search("player-fullscreen-fix") !== -1 ) {
    webFullScreen = true;
    }
    if(webFullScreen){
    doClick(fullscreen.querySelector('i[name="web_fullscreen"]'));
    doClick(isBangumi('i[name="widescreen"]'));
    webFullScreen = false;
    }else{
    doClick(fullscreen.querySelector('i[name="web_fullscreen"]'));
    }
    }
    };
    fullscreenClone.querySelector('i[name="web_fullscreen"]').addEventListener("click", webFullscreenFun, false);

    document.addEventListener("keydown", function(e) {
    if (e.keyCode == 13 && e.ctrlKey) {
    webFullscreenFun();
    return false;
    }
    if (e.keyCode == 13) {
    fullscreenFun();
    return false;
    }
    }, false);

    clearInterval(timer);
    } else{
    timerCount++;
    if(timerCount >= 120){
    clearInterval(timer);
    }
    }
    }, 500);

    }
    function isBangumi(obj) {
    var bangumi = /bangumi.bilibili.com/g;
    var url = bangumi.exec(location.href);
    var iframePlayer = document.querySelector('iframe.bilibiliHtml5Player');
    if (url !== null && iframePlayer !== null) {
    return iframePlayer.contentWindow.document.body.querySelector(obj);
    } else {
    return document.querySelector(obj);
    }
    }
    function doClick(obj) {
    if (obj !== null) {
    if (obj.click) {
    obj.click();
    } else {
    var evt = document.createEvent('Event');
    evt.initEvent('click', true, true);
    obj.dispatchEvent(evt);
    }
    }
    }
    init();
    }) ();
  • 很好很强大
Sign In or Register to comment.