Greasy Fork is available in English.

今年一定島 只開啟一個webm影片

汲汲營營大報社

質問やレビューの投稿はこちらへ、スクリプトの通報はこちらへどうぞ。
// ==UserScript==
// @namespace    https://greasyfork.org/zh-TW/scripts/389589
// @name         今年一定島 只開啟一個webm影片
// @description  汲汲營營大報社
// @author       稻米
// @version      2019.10.13.0080.build16299
// @grant        none

// @include      *://*.komica.org/00/*
// @include      *://*.komica.org/00/*

// @exclude      *://*.komica.org/00/src/*
// @exclude      *://*.komica.org/00/thumb/*
// @exclude      *.jpg
// @exclude      *.png
// @exclude      *.webm

// ==/UserScript==





//jquery
try{}
catch(err){}
finally{}
//throw "stop";

$(document).ready(function() {
    //console.log( 'jquery ready' );
    //全域變數//global
    //window.var190830=[];
    //$.gginin=window.gg;
    //
    poi();
    //poi2();
});


function poi(){
    var aa0=$('.file-thumb');
    //console.log( aa0 );
    $('.file-thumb').on('click',function(e){//.file-thumb綁自己 //綁不到動態元素 //同$('.post')
        //console.log('click .file-thumb');
    });
    $('body').on('click','.file-thumb',function(e){//body綁.file-thumb //綁定失敗?191009
        //console.log('click body ');
    });
    $(window).on('click','.file-thumb',function(e){//window綁.file-thumb //綁定失敗
        //console.log('click window');
    });
    $('#contents').on('click','.file-thumb',function(e){//#contents綁.file-thumb
        //console.log('click #contents');//
    });

    //
    var aa=$('#contents').on('click','.file-thumb',function(e){ //綁定事件在body上 才抓得到動態新增的元件
        console.log('click .post');
        //console.log( e );
        //console.log( e.clientX,e.clientY );
        //console.log( e.screenX,e.screenY );
        //console.log( e.pageX,e.pageY );
        //console.log( e.offsetX,e.offsetY );

        //var aa02=$(window).scrollTop();//紀錄卷軸位置
        //aa02=e.clientY;
        //console.log( '卷軸位置',aa02 );

        var bb=$('span.expanded-close.text-button');//寫著收回的按鈕(全部)
        //var bb=$('video');
        //console.log( 'bb',bb );
        //var cc=$(this).parents('.post').children('.quote').prev().find('span.expanded-close.text-button');//.closest('span.expanded-close.text-button')//parent()

        var bb2=$(this).parents('.post').find('span.expanded-close.text-button');//寫著收回的按鈕(觸發的這個)
        //.closest('span.expanded-close.text-button')//parent()
        //var cc=$(this).parents('.post').find('video');//.closest('span.expanded-close.text-button')//parent()
        //console.log( cc.parent() );
        //console.log( 'cc',cc );

        if( bb2[0] ){
            //有找到才繼續
        }else{
            //console.log( '不是影片' );
            return ;
        }//cc

        //throw "stop";



        var dd=$(this).parents('.post').find('video');//影片元素
        //console.log( 'dd',dd,dd[0] );
        //if(dd.length>0){}
        switch(dd.length) {
            case 0://沒有找到
                //console.log('沒有找到');
                break;
            case 1://只有一個
                //console.log('只有一個');
                //break; //繼續執行
            default://找到多個
                //console.log('關閉其他影片');
                var FFF=$(window);
                FFF=$._data( FFF[0]).events;//列出元素的所有事件
                //console.log( FFF );
                if(FFF){
                    //事件存在
                    //if()
                    //console.log( FFF.scroll[0].handler.name );
                    var cc_191009=0;
                    $.each( FFF.scroll , function(k,v){
                        console.log( k,v );//印出事件名稱
                        if(v.handler.name == "poi_190906_ss"){
                            cc_191009++;
                        }
                    });//each
                    //let可以幫助您避免在javascript中掛起變量,並將變量的範圍保持在所需的範圍內。
                    for(let i = 0; i < cc_191009; i++){
                        $(window).off( 'scroll', poi_190906_ss);//解除事件
                    }
                }else{
                    //
                }
                poi2(bb,bb2,dd,this);//關閉其他影片
                poi3(bb2,dd);//載入紀錄過的卷軸位置 //->poi_190905(dd)
        }//switch

    });//click

}//poi()

function poi3(bb2,dd){
    dd[0].muted=false;//解除靜音
    //dd[0].volume = 0.9;//設定音量
    dd.css({
        "max-width": "640px",
        "max-height": "640px",
    });//影片的最大長寬

    dd[0].addEventListener( "loadedmetadata", function (e) {
        //console.log( dd,dd[0].videoWidth,dd[0].videoHeight );
    });
    dd.on('loadedmetadata',function(){
        poi_190905(dd);//網頁卷軸觸發影片靜音
        var bb2_xy=bb2.offset();
        //console.log( bb2_xy.top );
        $(window).scrollTop( bb2_xy.top );//載入紀錄過的卷軸位置//避免網頁亂跳
    });
}

function poi_190905(dd){
    //dd=video元素
    //影片側面的紅色框框
    //var ss = $(window).scrollTop();
    //console.log( $(window).width(),$(window).height() );//視窗可見大小
    //var dd_xy=dd[0].getBoundingClientRect();//元件xy長寬
    //console.log( dd_xy );
    //console.log( dd_xy.top + ss ); //等於 dd[0].offsetTop
    //dd_xy=dd.offset();
    //console.log( dd_xy );
    //dd_xy=dd.position();
    //console.log( dd_xy );

    var dd_xy2=[
        dd[0].offsetLeft,
        dd[0].offsetTop,
        dd[0].offsetWidth,
        dd[0].offsetHeight,
        dd[0].offsetParent,
    ];
    //console.log( dd_xy2 );//取top


    //$('.id190905x01xbefore').remove();//清除已經存在的元件

    var ee='';
    ee=$('.id190905x01xbefore');
    if( ee[0] ){
        //存在
    }else{
        //不存在
        //建立元素
var str =`
&ZeroWidthSpace;
&zwnj;
&nbsp;
`;
        str = $("<span class='id190905x01xbefore'>"+str+"</span>"); //放在影片元件的前面
        dd.before(str);
        ee=$('.id190905x01xbefore');
    }

    ee.css({
        'background-color':'none', //gray
        'position': 'absolute',
        'top': dd[0].offsetTop ,
        'left': '0px' , //dd[0].offsetLeft
        'width': '200px' ,
        'height': '200px' ,
        'pointer-events': 'none',
    });
    ee.css({
        "border-left":"10px solid red",
        'opacity': '0.5',
    });
    //
    //console.log( ee );
    //console.log( ee.offset() );

    //$(window).off( 'scroll', poi_190906_ss);
    //$(window).on( 'scroll', poi_190906_ss(ee,dd));
    //$(window).scroll(  );
    //var ff = poi_190906_ss;
    //設定網頁卷軸觸發影片靜音
    $(window).on( 'scroll',{v1:dd,v2:ee}, poi_190906_ss);
    //

}//poi_190905()
//
function poi_190906_ss(event){
    //設定網頁卷軸觸發影片靜音
    //console.log( 'scroll2' );
    //console.log(event.data);//有抓到
    var dd = event.data.v1;//傳進來的變數 //video元素
    var ee = event.data.v2;//傳進來的變數 //紅色框框元素
    var 緩衝 = 640;
    var 判斷a = (ee[0].offsetTop - 緩衝 > $(window).scrollTop() + $(window).height());//元件滾出頂部
    var 判斷b = (ee[0].offsetTop + 緩衝 + ee[0].offsetHeight < $(window).scrollTop());//元件滾出底部
    if( 判斷a || 判斷b ){
        //元件超出可見範圍
        if( dd[0].muted==false ){
            console.log( '影片靜音' );
            dd[0].muted=true;//影片靜音
        }
    }else{
        //console.log( '??' );
    }
}//poi_190906_ss()

//
function poi2(bb,bb2,dd,_this_){
    //關閉其他影片
    //console.log( _this_ );
    //console.log( _this_ );
    //console.log( cc );

    //var dd_xy=dd.parents('.-expanded').offset(); //影片位置
    //console.log( '影片位置',dd_xy.top );


    var str = $("<span class='id190830x01'>關閉其他影片</span>");
    bb2.parent().append(str);
    $('.id190830x01').css({
        'background-color':'#c8c8c8',
    });
    $('.id190830x01').animate({
        opacity: 0.25,
    },2000,'linear',function(){
        $(this).remove();
    })



    $.each( bb , function( index, value ) {

        //console.log( index,value,bb2[0]);
        if(value == bb2[0] ){
            //console.log('T');
        }else{
            //console.log('F');
            var a01=$(value).offset();//.scrollTop()
            //console.log( a01 );//網頁元件位置

            $(value).trigger('click');//模擬滑鼠點擊事件
            //value.muted=true;
        }

    });//each



}

function color(){
    xxx.parent().css({
        "border-right":"10px solid red",
    });

}


/*
http://sora.komica.org/common/js/script.js?t=1540381957
綜合網頁亂跳的原因


				var cur = $(this).closest('.post').offset().top;
				var h1 = $(window).scrollTop();
				var h2 = h1 + $(window).innerHeight();
				if(cur<h1 || cur>h2) $('html,body').animate({scrollTop:cur}, 0);


*/