PTT Long Change

Change on PTT.cc.

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 or Violentmonkey 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        	PTT Long Change
// @description     Change on PTT.cc.
// @author          Lalong
// @include       	https://www.ptt.cc/bbs/*
// @include       	https://www.ptt.cc/man/*
// @include       	https://www.ptt.cc/ask/over18*
// @version       	2.7.12
// @require         https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
// @namespace       https://greasyfork.org/zh-TW/scripts/33714-ptt-long-change
// @grant			GM_addStyle
// ==/UserScript==

GM_addStyle ( `
.topbar{
background-color:rgba(0, 0, 136, 0.4);opacity: 0;transition: opacity 0.3s;
}
.topbar:hover{
background-color:rgba(10, 106, 196, 0.4);opacity:1;
}
.push-userid{
height:31px;
display:inline-block;
transition: all 0.1s ease;
}
.push-userid:hover{
cursor:pointer;
}
.oPo{
position:absolute;
transition: all 0.1s ease;
display:inline-block;
cursor:pointer;
z-index:10;
}
.activeId{
background-color:#444;
border-radius:5px 5px 0px 0px;
}
.pushIdSelect{
background-color:navy;
}
a{
text-decoration:none;
}
a:visited{
color: #aaa;
}
a:hover{
color:black;
}
.pwe-floor{
position:absolute;
left:-4.5em;
width:4em;
text-align:right;
color:gray;
}
.pwe-hover{
border-radius:5px 0px 0px 5px;
text-align:center;
background-color:black;
color:white;
border:1.5px solid grey;
z-index: 5;
}
.id-backColor{
background-color:#113f1b;
}
.id-backColor.pushIdSelect{
background-color:navy;
}
.id_dropDown{
border-radius:0px 10px 10px 10px;
position: absolute;
background-color: #444;
z-index: 10;
white-space: nowrap;
display:none;
}
.drop-menu{
display: block;
padding: 1ex;
color: #aaa;
line-height: 1em;
}
.overlay{
position: absolute;
z-index:2;
background-color:#404040;
border-radius:3px 3px 3px 3px;
width:100%;
}
.overlay:hover, .title:hover{
background-color:#C0C0C0;
color:black;
cursor:pointer;
}
img{
cursor:pointer;
}
` );


var board = $('.board').eq(0).text().split(' ')[1];//看板名稱

$(document).ready(function(){
     var findA=$('a');
    var key=false;
    for(var aItem=0;aItem< findA.length;aItem++)
    {
        var aTarget=$('a').eq(aItem);
        if(/(?=.*imgur\.com\/a\/)/.test(aTarget.prop('href'))){
            setTimeout(mainF, 5000);
            key=true;
            break;
        }
    }
    if(!key){
        mainF();
    }
    //top bar
     $(document).scroll(function() {
         if( $(this).scrollTop() == 0 ){
             if($('#topbar-container').hasClass("topbar")){
                 $('#topbar-container').removeClass('topbar');
             }
         }
         else{
             if(!$('#topbar-container').hasClass("topbar")){
                 $('#topbar-container').addClass('topbar');
             }
         }
  });
});

function mainF(){
    //自動skip已滿18頁面
    if( $('.btn-big').length  > 0){$('.btn-big')[0].click();}
    //背景塗黑
    $('body').css('background-color','black');
    //頂端bar隱形樣式
    //$('#topbar-container').addClass('topbar');
    //$("#topbar").css({"background-color":"#0c0a66"})
    //底部bar去除
    $('#navigation-container').remove();
    //頂端bar右邊兩個去除
    //$(".right:contains('關於我們')").after('<input type="color" id="html5colorpicker" onchange="clickColor(0, -1, -1, 5)" value="#113f1b" style="width:5%;">');
    $('.right').remove();
    //$("#html5colorpicker").addClass("right").addClass("small");

    var poName =$('.article-meta-value').eq(0).text().trim().split(' ')[0];

    //真‧推文的樓層
    var floorTop=$('.f2:contains("※ 發信站: 批踢踢實業坊")');
    var pushes;
    if(floorTop.length>0){
        pushes = floorTop.nextAll('.push');
    }
    else{
        pushes = $('.push');
    }
    var snNormal=0,snPush=0,snBad=0,snString='',hoverColor='';
    for(var i = 0; i<pushes.length; i++){
        var iNum = i + 1;
        var oMain=pushes.eq(i);
        if(oMain.children('.push-tag').length > 0)
        {
        //push-tag:'→ ','推 ','噓 '
        switch(oMain.children('.push-tag').text())
        {
            case '→ ':
                snNormal++;
                snString='第 '+snNormal+' <span style="color:#f66;">→</span>';
                hoverColor = 'white';
                break;
            case '推 ':
                snPush++;
                snString='第 '+snPush+' 推';
                hoverColor = 'white';
                break;
            case '噓 ':
                snBad++;
                snString='第 '+snBad+' 噓';
                hoverColor = '#f66';
                break;
        }
        var sPush = "<span class='pwe-floor' data-hover='"+snString+"' data-color='"+hoverColor+"'>"+iNum+" 樓 </span>";
        oMain.prepend(sPush);
        oMain.hover(function(){
            var oFinal=$(this).children('.pwe-floor');
            var oPushTag=$(this).children('.push-tag');
            oFinal.attr('data-floor',$(this).children('.pwe-floor').text());
            //oFinal.text(oFinal.attr('data-hover').replace(/\ /g, ''));
            oFinal.html(oFinal.attr('data-hover'));
            var oLeft = oFinal.position().left;
            var tagWidth = oPushTag.width();
            var tagLeft = oPushTag.position().left;
            var setWidth = (tagLeft+tagWidth-oLeft-16)+'px';
            oFinal.css('width',setWidth);
            oFinal.css('color',oFinal.attr('data-color'));
            oFinal.addClass('pwe-hover');
        },function(){
            var oFinal=$(this).children('.pwe-floor');
            oFinal.html(oFinal.attr('data-floor'));
            oFinal.css({'width':'','color':''});
            oFinal.removeClass('pwe-hover');
        });
        }
    }

    //先append div
    var dropDownHtml='<div class="id_dropDown"></div>';
    $('body').append(dropDownHtml);

    //含簽名檔的推文ID變色
    var pushesAll=$('.push');
    for(var j=0; j<pushesAll.length; j++){
        var pushesAllId = pushesAll.eq(j).children('.push-userid');
        var pushEqJ=pushesAll.eq(j);
        var id = pushesAllId.text().trim();
        if(id == poName){ //作者推文底色
            pushEqJ.addClass('id-backColor');
        }
        //推文設定id
        pushesAllId.attr('id',id);
        pushesAllId.addClass(id);
        pushEqJ.click(changeColor);
        pushesAllId.click(activeColor);
        pushesAllId.click(dropDownMenu);
    }

    body_click();

    var oPo=$('#main-content').find('.article-meta-tag:contains("作者")').next();
    var oPoName = oPo.text().trim().split(' ')[0];
    oPo.attr('id',oPoName);
    oPo.addClass('oPo');
    oPo.addClass(oPoName);
    oPo.click(activeColor);
    oPo.click(dropDownMenu);

    //更改標題為連結同標題看板搜尋
    var title =$('#main-content').find('.article-meta-tag:contains("標題")').next();
    var linktitle = title.text().replace('Re:','').trim();//去掉Re:的標題名稱
    title.addClass('title');
    title.click(function(){
        window.location.href = 'https://www.ptt.cc/bbs/'+board+'/search?q=thread%3A'+linktitle;
    });

    //Imgur網址隱藏(ptt網頁版會自動開圖)
    var allA=$('a');
    for(var aItem=0;aItem< allA.length;aItem++)
    {
        var aTarget=$('a').eq(aItem);
        if(/(?=.*imgur)/.test(aTarget.prop('href'))){
            aTarget.css('color','black');
        }
    }
    //Img點擊縮小放大
    $("img").click(slide);

    //去除低調
    $('.f0').removeClass('f0');

    //自動更新推文打開
    $('#article-polling').click();

    //移除"本網站已依台灣網站內容分級規定處理。此區域為限制級,未滿十八歲者不得瀏覽。"字眼
    $('.bbs-footer-message').remove();
};

function changeColor(){
    var id = $(this).children('.push-userid').prop('id');
    var target = $('.'+id).parent();
    if(target.hasClass('pushIdSelect')){
        target.removeClass('pushIdSelect');
    }
    else{
        $('.pushIdSelect').removeClass('pushIdSelect');
        target.addClass('pushIdSelect');
    }
};
function activeColor(){
     var target = $(this);
    if(!target.hasClass('activeId')){
        $('.oPo').removeClass('activeId',100);
        $('.push-userid').removeClass('activeId');
        target.addClass('activeId');
    }
};
function dropDownMenu(){
    var _this=$(this);
    _this.addClass('NowDropDown');
    var idDropDown=$('.id_dropDown');
    var iOffset=_this.offset();
    var top=iOffset.top+_this.outerHeight();
    var left=iOffset.left;

    if(idDropDown.hasClass('menuShow')){
        idDropDown.animate({left:left}, 100, 'linear');
        idDropDown.animate({top:top}, 100, 'linear');
    }
    else{
        idDropDown.css('top',top);
        idDropDown.css('left',left);
        idDropDown.fadeIn(150);
        idDropDown.addClass('menuShow');
    }
    writeDropMenu(_this.prop('id'));
};

function writeDropMenu(sId){
    //var sBoard=$('.article-metaline-right').find('.article-meta-value').text().trim();
    var sHtml='';
    sHtml += '<div>';
    sHtml += '<a href="/bbs/'+board+'/search?q=author:'+sId+'" class="drop-menu">Search 此板 '+sId+' 的文章</a>';
    sHtml += '<a href="/bbs/ALLPOST/search?q=author:'+sId+'" class="drop-menu">Search ALLPOST 板 '+sId+' 的文章</a>';
    sHtml += '<a href="https://www.google.com/search?q=site%3Aptt.cc%20'+sId+'" target="_blank" class="drop-menu" >Google PTT '+sId+'</a>';
    sHtml += '<a href="https://www.google.com/search?q='+sId+'" target="_blank" class="drop-menu" >Google '+sId+'</a>';
    sHtml += '</div></div>';
    $('.id_dropDown').html(sHtml);
}

function slide(){
    var target=$(this);
    if(!target.hasClass('imgSmall')){
        var pxHeight;
        var pxWidth;
        if(!target.hasClass('overDiv')){
            pxHeight = target.height()+'px';
            pxWidth = target.width();
            //var divWidth = target.parent().width()/2-pxWidth/2;
            target.parent().css('text-align','center');
            target.before('<div class="overlay">'+target.prop('src')+'</div>');
            target.prev().css('height','25px');
            //target.prev().css({'height':'25px','width':pxWidth+'px','left':divWidth+'px'});
            target.prev().click(clickDiv);
        }
        else{
            target.prev().show();
        }
        target.attr('data-height',pxHeight);
        target.addClass('imgSmall');
        target.addClass('overDiv');
        target.animate({width:pxWidth+'px'},1);
        target.animate({height:"0px"},100);
    }
}

function clickDiv(){
     var target=$(this).next();
    $(this).hide();
    if(target.hasClass('imgSmall')){
        target.removeClass('imgSmall');
        target.animate({height:target.attr('data-height')},101);
    }
}

function body_click(){
    $(document).on('click', function (evt) {
        if(!$(evt.target).parent().parent().hasClass('id_dropDown') && !$(evt.target).hasClass('NowDropDown')){
            $('.oPo').removeClass('activeId',100);
             $('.push-userid').removeClass('activeId',100);
            $('.NowDropDown').removeClass('NowDropDown');
            $('.id_dropDown').removeClass('menuShow');
            $('.id_dropDown').fadeOut(100);
        }
    });
};