您需要先安装一个扩展,例如 篡改猴、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://gf.qytechs.cn/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))));
- }
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址