Greasy Fork is available in English.

知乎 显示匿名按钮、查看问题日志按钮、快捷键帮助按钮、知乎跳转改为直链

显示匿名按钮、查看问题日志按钮、快捷键帮助按钮、知乎跳转改为直链

Από την 26/05/2020. Δείτε την τελευταία έκδοση.

// ==UserScript==
// @name         知乎 显示匿名按钮、查看问题日志按钮、快捷键帮助按钮、知乎跳转改为直链
// @namespace    http://tampermonkey.net/
// @version      0.8.2
// @description  显示匿名按钮、查看问题日志按钮、快捷键帮助按钮、知乎跳转改为直链
// @author       AN drew
// @match        https://www.zhihu.com/*
// @match        https://zhuanlan.zhihu.com/p/*
// @require      https://code.jquery.com/jquery-3.1.1.min.js
// @grant        none
// ==/UserScript==

var $hint =$('<div>'+
'   <div>'+
'    <div>'+
'     <div class="Modal-wrapper Modal-enter-done">'+
'      <div class="Modal-backdrop"></div>'+
'      <div class="Modal Modal--default ShortcutHintModal" tabindex="0">'+
'       <div class="Modal-inner">'+
'        <h3 class="Modal-title">快捷键帮助</h3>'+
'        <div class="Modal-content">'+
'         <div class="ShortcutHintModal-content">'+
'          <div class="ShortcutHintModal-hintListContainer">'+
'           <div class="ShortcutHintModal-hintList">'+
'            <div class="ShortcutHintModal-hintTitle">'+
'             操作'+
'            </div>'+
'            <div class="KeyHint">'+
'             <div class="KeyHint-keyContainer">'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">V</kbd>'+
'              </div>'+
'             </div>'+
'             <div>'+
'              :赞同'+
'             </div>'+
'            </div>'+
'            <div class="KeyHint">'+
'             <div class="KeyHint-keyContainer">'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">D</kbd>'+
'              </div>'+
'             </div>'+
'             <div>'+
'              :反对'+
'             </div>'+
'            </div>'+
'            <div class="KeyHint">'+
'             <div class="KeyHint-keyContainer">'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">L</kbd>'+
'              </div>'+
'             </div>'+
'             <div>'+
'              :喜欢'+
'             </div>'+
'            </div>'+
'            <div class="KeyHint">'+
'             <div class="KeyHint-keyContainer">'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">C</kbd>'+
'              </div>'+
'             </div>'+
'             <div>'+
'              :展开 / 收起评论'+
'             </div>'+
'            </div>'+
'            <div class="KeyHint">'+
'             <div class="KeyHint-keyContainer">'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">Shift</kbd>'+
'               <div class="KeyHint-separator">'+
'                +'+
'               </div>'+
'              </div>'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">C</kbd>'+
'              </div>'+
'             </div>'+
'             <div>'+
'              :聚焦到评论框'+
'             </div>'+
'            </div>'+
'            <div class="KeyHint">'+
'             <div class="KeyHint-keyContainer">'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">O</kbd>'+
'              </div>'+
'             </div>'+
'             <div>'+
'              :展开 / 收起全文'+
'             </div>'+
'            </div>'+
'            <div class="KeyHint">'+
'             <div class="KeyHint-keyContainer">'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">S</kbd>'+
'               <div class="KeyHint-separator KeyHint-separator--space"> '+
'               </div>'+
'              </div>'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">C</kbd>'+
'              </div>'+
'             </div>'+
'             <div>'+
'              :收藏'+
'             </div>'+
'            </div>'+
'            <div class="KeyHint">'+
'             <div class="KeyHint-keyContainer">'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">F</kbd>'+
'               <div class="KeyHint-separator KeyHint-separator--space"> '+
'               </div>'+
'              </div>'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">X</kbd>'+
'              </div>'+
'             </div>'+
'             <div>'+
'              :分享'+
'             </div>'+
'            </div>'+
'           </div>'+
'           <div class="ShortcutHintModal-hintList">'+
'            <div class="ShortcutHintModal-hintTitle">'+
'             导航'+
'            </div>'+
'            <div class="KeyHint">'+
'             <div class="KeyHint-keyContainer">'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">J</kbd>'+
'              </div>'+
'             </div>'+
'             <div>'+
'              :下一项'+
'             </div>'+
'            </div>'+
'            <div class="KeyHint">'+
'             <div class="KeyHint-keyContainer">'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">K</kbd>'+
'              </div>'+
'             </div>'+
'             <div>'+
'              :上一项'+
'             </div>'+
'            </div>'+
'            <div class="KeyHint">'+
'             <div class="KeyHint-keyContainer">'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">G</kbd>'+
'               <div class="KeyHint-separator KeyHint-separator--space"> '+
'               </div>'+
'              </div>'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">G</kbd>'+
'              </div>'+
'             </div>'+
'             <div>'+
'              :第一项'+
'             </div>'+
'            </div>'+
'            <div class="KeyHint">'+
'             <div class="KeyHint-keyContainer">'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">Shift</kbd>'+
'               <div class="KeyHint-separator">'+
'                +'+
'               </div>'+
'              </div>'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">G</kbd>'+
'              </div>'+
'             </div>'+
'             <div>'+
'              :最后一项'+
'             </div>'+
'            </div>'+
'            <div class="KeyHint">'+
'             <div class="KeyHint-keyContainer">'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">Shift</kbd>'+
'               <div class="KeyHint-separator">'+
'                +'+
'               </div>'+
'              </div>'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">U</kbd>'+
'              </div>'+
'             </div>'+
'             <div>'+
'              :向上滚动半屏'+
'             </div>'+
'            </div>'+
'            <div class="KeyHint">'+
'             <div class="KeyHint-keyContainer">'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">Shift</kbd>'+
'               <div class="KeyHint-separator">'+
'                +'+
'               </div>'+
'              </div>'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">D</kbd>'+
'              </div>'+
'             </div>'+
'             <div>'+
'              :向下滚动半屏'+
'             </div>'+
'            </div>'+
'            <div class="KeyHint">'+
'             <div class="KeyHint-keyContainer">'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">/</kbd>'+
'              </div>'+
'             </div>'+
'             <div>'+
'              :搜索'+
'             </div>'+
'            </div>'+
'            <div class="KeyHint">'+
'             <div class="KeyHint-keyContainer">'+
'              <div class="KeyHint-key">'+
'               <kbd class="KeyHint-kbd">?</kbd>'+
'              </div>'+
'             </div>'+
'             <div>'+
'              :快捷键帮助'+
'             </div>'+
'            </div>'+
'           </div>'+
'          </div>'+
'         </div>'+
'        </div>'+
'       </div>'+
'       <button aria-label="关闭" type="button" class="Button Modal-closeButton Button--plain">'+
'        <svg class="Zi Zi--Close Modal-closeIcon" fill="currentColor" viewbox="0 0 24 24" width="24" height="24">'+
'         <path d="M13.486 12l5.208-5.207a1.048 1.048 0 0 0-.006-1.483 1.046 1.046 0 0 0-1.482-.005L12 10.514 6.793 5.305a1.048 1.048 0 0 0-1.483.005 1.046 1.046 0 0 0-.005 1.483L10.514 12l-5.208 5.207a1.048 1.048 0 0 0 .006 1.483 1.046 1.046 0 0 0 1.482.005L12 13.486l5.207 5.208a1.048 1.048 0 0 0 1.483-.006 1.046 1.046 0 0 0 .005-1.482L13.486 12z" fill-rule="evenodd"></path>'+
'        </svg></button>'+
'      </div>'+
'     </div>'+
'    </div>'+
'   </div>'+
'</div>')

function addAnonymous($QuestionHeaderActions,$child5)
{
    var a ='<button type ="button" style="vertical-align:middle" class = "Button Button--plain Button--withIcon Button--withLabel"> <span style = "vertical-align:middle; align-items: center;" > <img style = "vertical-align:middle;" src="https://gitee.com/AN_drew/picBed/raw/master/img/mask.svg"> &nbsp;匿名</span></button>';
    var $anonymous = $(a)
    $anonymous.bind("click",function(){
        $child5.find("button").click();
        $(".Menu.QuestionHeader-menu > button").click();
    })
    $QuestionHeaderActions.append($anonymous)
}

function addLog($QuestionHeaderActions)
{
    var url = window.location.href;
    var end,href;
    if(url.indexOf("answer")>-1)
    {
        end=url.indexOf("answer")
        href = url.substring(0,end);
    }
    else
    {
        href=url+"/"
    }
    var L='<a href="'+href+'log" target="_self" type="button" class="Button Menu-item QuestionHeader-menu-item Button--plain"><img style ="vertical-align:middle;" src="https://gitee.com/AN_drew/picBed/raw/master/img/log.svg">&nbsp;&nbsp;查看问题日志</a>'
    var $log = $(L);
    var $Popover = $('<div class="Popover" style ="vertical-align:middle;margin-left:0px"></div>')
    $Popover.append($log)
    $QuestionHeaderActions.append($Popover)
}

function addShortCut($QuestionHeaderActions)
{
    var s ='<button type ="button" style="vertical-align:middle; margin-left:0px" class = "Button Button--plain Button--withIcon Button--withLabel"> <span style = "vertical-align:middle; align-items: center;" > <img style = "vertical-align:middle;" src="https://gitee.com/AN_drew/picBed/raw/master/img/keyboard.svg"> &nbsp;快捷键帮助</span></button>';
    var $shortcut = $(s)
    $shortcut.click(function(){
            $(".Modal-wrapper").show()
        });
    $QuestionHeaderActions.append($shortcut)

}

function addReport1($more)
{
    $more.hide()
    var r ='<button type ="button" style="vertical-align:middle;margin-left:20px" class = "Button Button--plain Button--withIcon Button--withLabel"> <span style = "vertical-align:middle; align-items: center;" > <img style = "vertical-align:-5%;" src="https://gitee.com/AN_drew/picBed/raw/master/img/report.svg"> &nbsp;举报</span></button>';
    var $report = $(r)
    $report.bind("click",function(){
        $more.find("button").click();
        $(".Menu.AnswerItem-selfMenu").find("button").click();
    })
    $more.after($report)
}


function question()
{
    if($(".Modal-wrapper").length==0)
    {
        $(document.body).append($hint)
        $(".Modal-wrapper").hide()
        $(".Modal-closeButton").click(function(){
            $(".Modal-wrapper").hide()
        })
    }

    var $QuestionHeaderActions = $("div.QuestionHeaderActions")

    var $child4 = $QuestionHeaderActions.children().eq(4-1)
    var $child5 = $QuestionHeaderActions.children().eq(5-1)
    var $child6 = $QuestionHeaderActions.children().eq(6-1)
    var $child7 = $QuestionHeaderActions.children().eq(7-1)
    var $child8 = $QuestionHeaderActions.children().eq(8-1)

    if($child4.length>0 && $child4.text().indexOf("举报")> -1) //已登录
    {
        $child5.attr("style","display:none")

        if($child6.length == 0) //未添加匿名
        {
            addAnonymous($QuestionHeaderActions,$child5)
        }
        if($child7.length == 0) //未添加查看问题日志
        {
            addLog($QuestionHeaderActions)
        }
        if($child8.length == 0) //未添加快捷键帮助
        {
            addShortCut($QuestionHeaderActions)
        }

        var $ContentItem_actions = $(".ContentItem-actions")
        $ContentItem_actions.each(function(){
            var $Content_child5 = $(this).children().eq(5-1)
            var $Content_child6 = $(this).children().eq(6-1)
            var $Content_child7 = $(this).children().eq(7-1)
            if($Content_child5.length>0 && $Content_child5.text().indexOf("喜欢")==-1)
            {
                return true;
            }
            else if($Content_child7.length==0 || $Content_child7.text().indexOf("举报")==-1 ) //未添加举报
            {
                addReport1($Content_child6)
            }
        })

    }
    else //未登录
    {
        $child4.attr("style","display:none")

        if($child5.length == 0) //未添加查看问题日志
        {
            addLog($QuestionHeaderActions)
        }
        if($child6.length == 0) //未添加快捷键帮助
        {
            addShortCut($QuestionHeaderActions)
        }
    }



    $(".ContentItem-time").each(function(){
        if($(this).text().indexOf("发布于")==-1)
        {
            var data_tooltip = $(this).find("span").attr("data-tooltip");
            var oldtext = $(this).find("span").text();
            $(this).find("span").text(data_tooltip+"\xa0\xa0,\xa0\xa0"+oldtext);
        }
    })

    $(".Pc-card.Card").attr("style","display:none")
    $(".Card.ViewAll").attr("style","background-color:#0084FF")
    $(".QuestionMainAction.ViewAll-QuestionMainAction").attr("style","color:white")

}

function directLink()
{
    var equal,colon,external_href,protocol,path,new_href;
    $("a[class*='external']").each(function(){

        if($(this).find("span").length>0)
        {
            new_href = $(this).text()
            $(this).attr("href",decodeURIComponent(new_href))
        }
        else if($(this).attr("href").indexOf("https://link.zhihu.com/?target=") > -1)
        {
            external_href=$(this).attr("href")
            equal = external_href.lastIndexOf("http")
            colon = external_href.lastIndexOf("%3A")
            protocol = external_href.substring(equal,colon)
            path = external_href.substring(colon+5,external_href.length)
            new_href = protocol+"://"+path
            $(this).attr("href",decodeURIComponent(new_href))
        }
    })


    $("a[class*='LinkCard']").each(function(){
        console.log($(this).find("LinkCard-title").get(0))
        if($(this).find("LinkCard-title").length>0 && $(this).find("LinkCard-title").indexOf("http")>-1 )
        {
            new_href = $(this).find("LinkCard-title").text()
            $(this).attr("href",decodeURIComponent(new_href))
        }
        else if($(this).attr("href").indexOf("https://link.zhihu.com/?target=") > -1)
        {
            external_href=$(this).attr("href")
            equal = external_href.lastIndexOf("http")
            colon = external_href.lastIndexOf("%3A")
            protocol = external_href.substring(equal,colon)
            path = external_href.substring(colon+5,external_href.length)
            new_href = protocol+"://"+path
            $(this).attr("href",decodeURIComponent(new_href))
        }
    })

    $(".TopstoryItem--advertCard").hide()

}

function addReport2($more)
{
    $more.hide()
    var r ='<button type ="button" style="vertical-align:middle;margin-left:20px" class = "Button Button--plain Button--withIcon Button--withLabel"> <span style = "vertical-align:middle; align-items: center;" > <img style = "vertical-align:-5%;" src="https://gitee.com/AN_drew/picBed/raw/master/img/report.svg"> &nbsp;举报</span></button>';
    var $report = $(r)
    $report.bind("click",function(){
        $more.find("button").click();
        $(".Menu.Post-ActionMenu").find("button").click();
    })
    $more.after($report)
}

function zhuanlan()
{
    $(".Recommendations-Main").hide()

    var $ContentItem_actions = $(".ContentItem-actions")
    var $child5 = $ContentItem_actions.children().eq(5-1)
    var $child6 = $ContentItem_actions.children().eq(6-1)
    if($child6.length == 0) //未添加举报
    {
        addReport2($child5)
    }

}

function zvideo()
{
    $(".ZVideo-sideColumn").hide()
}

function addReport3($more)
{
    $more.hide()
    var r ='<button class="ClubJoinOrCheckinButton" style="margin-right:20px"><img src="https://gitee.com/AN_drew/picBed/raw/master/img/exit.svg"/><span style="color:red">&nbsp;退出圈子</span></button>';
    var $report = $(r)
    $report.bind("click",function(){
        $more.find("button").click();
        $(".ClubHeaderInfoMoreButton-item").click();
    })
    $more.after($report)
}


function addReport4($more)
{
    $more.hide()
    var r ='<button type ="button" style="vertical-align:middle;margin-left:20px" class = "Button PostWebActionButtons-comment Button--plain Button--withIcon Button--withLabel"> <span style = "vertical-align:middle; align-items: center;" > <img style = "vertical-align:-5%;" src="https://gitee.com/AN_drew/picBed/raw/master/img/report.svg"> &nbsp;举报</span></button>';
    var $report = $(r)
    $report.bind("click",function(){
        $more.find("button").click();
        $(".PostWebActionButtons-item").click();
    })
    $more.after($report)
}

function club()
{
    var $ClubHeaderInfo_buttonGroup = $(".ClubHeaderInfo-buttonGroup")
    var $child1 = $ClubHeaderInfo_buttonGroup.children().eq(1-1)
    var $child2 = $ClubHeaderInfo_buttonGroup.children().eq(2-1)
    if($child2.length > 0 && $child2.text().indexOf("签到") > -1 && $child2.text().indexOf("加入") == -1) //未添加举报
    {
        addReport3($child1)
    }

    $(".PostReaction").each(function(){
        var post_child4 = $(this).children().eq(4-1)
        var post_child5 = $(this).children().eq(5-1)
        if(post_child5.length==0 || post_child5.text().indexOf("举报")==-1 ) //未添加举报
        {
            addReport4(post_child4)
        }
    })

}

function addReport5($more)
{
    $more.hide()
    var r ='<button type ="button" style="vertical-align:middle;margin-left:20px" class = "Button Button--plain Button--withIcon Button--withLabel"> <span style = "vertical-align:middle; align-items: center;" > <img style = "vertical-align:-5%;" src="https://gitee.com/AN_drew/picBed/raw/master/img/report.svg"> &nbsp;举报</span></button>';
    var $report = $(r)
    $report.bind("click",function(){
        $more.find("button").click();
        $(".AnswerItem-selfMenu").children().eq(1).click();
    })
    $more.after($report)
}

function search()
{
    $(".ContentItem-actions").each(function(){
        var $child6 = $(this).children().eq(6-1)
        var $child7 = $(this).children().eq(7-1)
        console.log($child6)
        console.log($child7)
        if($child7.text().indexOf("收起") > -1)
        {
            addReport5($child6)
        }
    })
}

function lives()
{
    $("[class*='LiveWechatSpread']").remove()
}

function collection()
{
    $(".ContentItem-actions").each(function(){
        var $child6 = $(this).children().eq(6-1)
        var $child7 = $(this).children().eq(7-1)
        console.log($child6)
        console.log($child7)
        if($child7.length==0 || $child7.text().indexOf("收起") > -1)
        {
            addReport5($child6)
        }
    })
}


(function() {
    'use strict';
    $("time").css({"color":"blue","font-weight":"bold","font-size":"15px"})
    setInterval(directLink,100)

    if(window.location.href.indexOf("question") > -1)
        setInterval(question, 300);
    else if(window.location.href.indexOf("zvideo") > -1)
        setInterval(zvideo, 300);
    else if(window.location.href.indexOf("club") > -1)
        setInterval(club, 300);
    else if(window.location.href.indexOf("search") > -1)
        setInterval(search, 300);
    else if(window.location.href.indexOf("lives") > -1)
        setInterval(lives, 300);
    else if(window.location.href.indexOf("collection") > -1)
        setInterval(collection, 300);
    else if(window.location.href.indexOf("zhuanlan.zhihu.com") > -1)
        setInterval(zhuanlan, 300);
    // Your code here...
})();