您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Try to search DuckDuckGo, and if it fails, use Google instead.
// ==UserScript== // @name DuckDuckGoogle // @description Try to search DuckDuckGo, and if it fails, use Google instead. // @author ForgottenUmbrella // @namespace https://greasyfork.org/users/83187 // @version 1.0.5 // @match *://duckduckgo.com/* // ==/UserScript== // Return a URL for searching Google. function googleSearchUrl(query) { const base = "https://www.google.com"; return `${base}/search?q=${query}`; } // Return the search query on DuckDuckGo. function ddgQuery(searchUrl) { const params = new URLSearchParams(searchUrl); return params.get("q"); } // Return whether Firefox has encountered a proxy error. function firefoxProxyError() { const errors = document.getElementsByClassName("error-message"); return errors.length !== 0; } // Return whether Chrome has encountered a privacy error. function chromePrivacyError() { const isNewTabPage = document.getElementById("one-google") !== null; // Chrome loads the new tab page when a privacy error occurs, so // detect whether the current page is the new tab page and return it. return isNewTabPage; } // Return whether the browser is Chrome. function isChrome() { return window.chrome !== undefined; } // Navigate to a URL. function goto(url) { location.href = url; } (() => { const failed = isChrome() ? chromePrivacyError() : firefoxProxyError(); if (failed) { goto(googleSearchUrl(encodeURIComponent(ddgQuery(location.search)))); } })();