您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
This is a script for you to enable query reformulation on Stack Overflow by using SEQUER, a software specific query reformulation approach.
// ==UserScript== // @name Query Reformulation for Stack Overflow // @namespace QueryReformulation // @version 1.1 // @description This is a script for you to enable query reformulation on Stack Overflow by using SEQUER, a software specific query reformulation approach. // @author kbcao // @match https://*.stackoverflow.com/* // @grant GM_xmlhttpRequest // @connect sequer-tpznovfjxa-uc.a.run.app // ==/UserScript== (function () { 'use strict'; var inputBoxTop = document.getElementsByClassName('s-input s-input__search js-search-field ')[0]; var inputBoxResult = document.getElementsByClassName('grid--cell fl1 s-input')[0]; function callapi(query, hintBox) { GM_xmlhttpRequest({ method: "GET", url: 'https://sequer-tpznovfjxa-uc.a.run.app/?query=' + query, onload: function (response) { var lastDisplay = document.getElementsByName('queryreformulation'); if (lastDisplay !== null) { for (var i = 0, len = lastDisplay.length; i < len; i++) { lastDisplay[0].parentNode.removeChild(lastDisplay[0]); } } var predictions = JSON.parse(response.response).predictions; if (predictions.length > 0) { var reform_hint_html = '<div class="sm:mb12" name="queryreformulation"> <span class="ff-mono fc-dark"> ----------------------<br> </span> <span class="ff-mono fc-dark"> <font size="3">Reformulations:</font> </span> </div>'; hintBox.children[0].innerHTML += reform_hint_html; } predictions.forEach(function (item, index, array) { var reform_html = '<div class="sm:mb12" name="queryreformulation" onclick="document.getElementsByClassName(\'s-input s-input__search js-search-field \')[0].value=this.children[0].innerText"> <span class="ff-mono fc-dark"><font size="2">' + item + '</font></span></div>'; hintBox.children[0].innerHTML += reform_html; }); } }); } $(document).keydown(function (e) { if (e.ctrlKey && e.keyCode == 81) { var hintboxAppear = document.getElementsByClassName('s-popover p0 wmx100 wmn4 sm:wmn-initial js-top-search-popover s-popover--arrow__tl is-visible')[0]; var hintBox; var query; if (hintboxAppear == null) { hintBox = document.getElementsByClassName('nav-links')[0]; } else { hintBox = hintboxAppear.children[3].children[0]; } if (inputBoxTop.value.length != 0) { query = inputBoxTop.value; } else { query = inputBoxResult.value; } callapi(query, hintBox); } }) })();