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

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

当前为 2020-05-19 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         知乎 显示匿名按钮、查看问题日志按钮、快捷键帮助按钮、知乎跳转改为直链
// @namespace    http://tampermonkey.net/
// @version      0.8.1
// @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)
        }
    }

    $(".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)
        {
            external_href=$(this).attr("href")
            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';
    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...
})();