知乎 显示匿名按钮、查看问题日志按钮、快捷键帮助按钮

显示匿名按钮、查看问题日志按钮、快捷键帮助按钮

目前為 2020-05-09 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         知乎 显示匿名按钮、查看问题日志按钮、快捷键帮助按钮
// @namespace    http://tampermonkey.net/
// @version      0.7
// @description  显示匿名按钮、查看问题日志按钮、快捷键帮助按钮
// @author       AN drew
// @match        https://www.zhihu.com/question/*
// @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 addReport($ContentItem_actions,$Content_child6)
{
    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(){
        $Content_child6.find("button").click();
        $(".Menu.AnswerItem-selfMenu").children().eq(1).click();
    })
    $Content_child6.after($report)
}


function addBtn()
{
    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_child6 = $(this).children().eq(6-1)
            var $Content_child7 = $(this).children().eq(7-1)
            if($Content_child7.length==0 || $Content_child7.text().indexOf("举报")==-1 ) //未添加举报
            {
                $Content_child6.attr("style","display:none")
                addReport($ContentItem_actions,$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() {
    'use strict';

    setInterval(addBtn, 300);

    // Your code here...
})();