简法主页功能增强

在简法主页上增加其他个性化设置

目前为 2021-08-24 提交的版本。查看 最新版本

// ==UserScript==
// @name         简法主页功能增强
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  在简法主页上增加其他个性化设置
// @author       那年那兔那些事
// @include       *://*.jianfast.com/*
// @icon         https://s3.bmp.ovh/imgs/2021/08/2a5feb8f5f886e70.png
// @grant        none
// ==/UserScript==

(function() {
	//创建设置列表
	var SettingsFn = function() {
		this.Options = {
			"EngineOnCurrentTab": true, //搜索引擎是否从当前标签页打开网页
			"BookmarkOnCurrentTab": true, //点击书签是否从当前标签页打开网页
			"AddNewSearchEngine": true, //是否添加新搜索引擎
			"Engine": "",
		};
	}
	//为SettingsFn添加新方法
	SettingsFn.prototype = {
		//get方法获取设置列表
		get: function(key) {
			return this.Options[key];
		},
		//set方法为设置类别修改属性
		set: function(key, value) {
			this.Options[key] = value;
		}
	}
	//创建Settings
	var Settings = new SettingsFn();

	//创建新搜索引擎列表
	var EnginesFn = function() {
		this.NewEngineList = [{
			"Name": "夸克",
			"Url": "https://quark.sm.cn/s?q=",
			"Img": "https://gss3.bdstatic.com/84oSdTum2Q5BphGlnYG/timg?wapp&quality=80&size=b150_150&subsize=20480&cut_x=0&cut_w=0&cut_y=0&cut_h=0&sec=1369815402&srctrace&di=dfe458fc945b48a3ba59df62e2012e66&wh_rate=null&src=http%3A%2F%2Fimgsrc.baidu.com%2Fforum%2Fpic%2Fitem%2Ff7246b600c33874451939b645e0fd9f9d72aa050.jpg"
		}];//格式:在[]内前一个{}后面加英文“,”,然后再按照下列格式在“,”后添加新搜索引擎:{“Name”:搜索引擎名字,"Url":搜索引擎URL,"Img":搜索引擎图标}
	}
	//为EnginesFn添加新方法
	EnginesFn.prototype = {
		//get方法获得新搜索引擎列表
		get: function() {
			return this.NewEngineList;
		},
		//set方法可以为NewEngineList添加NewEngine
		set: function(Name, Url, Img) {
			var len = this.NewEngineList.length;
			var newEngine = {
				"Name": Name,
				"Url": Url,
				"Img": Img
			};
			this.NewEngineList[len] = newEngine;
		},
		//search方法从新搜索引擎列表中按key搜索出相应部分
		search: function(key) {
			var len;
			if (typeof key === "string") {
				len = this.NewEngineList.length;
				var res = -1;
				if (len !== 0) {
					for (let i = 0; i < len; i++) {
						if (this.NewEngineList[i].Name === key) {
							res = i;
						}
					}
				}
				return res;
			} else if (typeof key === "number") {
				len = this.NewEngineList.length;
				if (key < len) {
					return this.NewEngineList[key];
				} else {
					return this.NewEngineList[len - 1];
				}
			} else {
				return -1;
			}

		},
		//change方法能改变打开网页方式
		change: function() {
			var SearchBtn = document.getElementById("search-btn");
			if (SearchBtn.name !== "newSearchBtn") {
				SearchBtn.onclick = function() {
					var searchOBJ = document.getElementById("search");
					var newURL = searchOBJ.getAttribute("data-engine-start") + searchOBJ.value;
					location.href = newURL;
				}
				SearchBtn.name = "newSearchBtn";
			}
		},
		select: function(Name, Url, Img, Flag) {
			var SearchType = document.getElementById("search-type");
			var Search = document.getElementById("search");
			var SearchMenu = document.getElementById("search-menu");
			if ((SearchType !== null) && (Search !== null) && (SearchMenu !== null)) {
				SearchType.style.backgroundImage = "url(" + Img + ")";
				Search.setAttribute("data-engine-start", Url);
				SearchMenu.style.display = "none";
				localStorage.setItem("Engine", Name);
				localStorage.setItem("searchType", Flag);
			}
		},
		//create方法创建新搜索引擎列表
		create: function(Name, Url, Img) {
			var newEngine = document.createElement("div");
			newEngine.setAttribute("class", "search-engine");
			newEngine.setAttribute("data-engine-start", Url);
			newEngine.setAttribute("data-engine-end", "");
			newEngine.innerHTML = "<img src=" + Img + "><span>" + Name + "</span>";
			newEngine.onclick = function() {
				Engines.select(Name, Url, Img, "0");
			};
			return newEngine;
		},
		//add方法能在原搜索引擎列表中添加新搜索引擎
		add: function() {
			var MenuObj = document.getElementById("search-menu");
			var List = Engines.get();
			if (MenuObj !== null) {
				if (MenuObj.name !== "newEngine") {
					if (List.length !== 0) {
						for (let i = 0; i < List.length; i++) {
							var NewEngine = Engines.create(List[i].Name, List[i].Url, List[i].Img);
							MenuObj.appendChild(NewEngine);
						}
						MenuObj.name = "newEngine";
					}
				}
			}
		},
		init: function(L) {
			var MenuObj = document.getElementById("search-menu");
			var Name;
			var Url;
			var Img;
            var nameList=[];
			var urlList=[];
			var imgList=[];
			if (MenuObj !== null) {
				for (let i = 0; i < L; i++) {
					var MenuChild = MenuObj.children[i];
					//Name = MenuChild.innerText;
					//Url = MenuChild.getAttribute("data-engine-end");
					//Img = MenuChild.children[0].src;
                    nameList[i] = MenuChild.innerText;
					urlList[i] = MenuChild.getAttribute("data-engine-start");
					imgList[i] = MenuChild.children[0].src;
					MenuChild.onclick = function() {
						console.log("i:"+i);
						//Engines.select(nameList[i],urlList[i], imgList[i], i.toString());
						var SearchType = document.getElementById("search-type");
						var Search = document.getElementById("search");
						var SearchMenu = document.getElementById("search-menu");
						if ((SearchType !== null) && (Search !== null) && (SearchMenu !== null)) {
							SearchType.style.backgroundImage = "url(" + imgList[i] + ")";
							Search.setAttribute("data-engine-start", urlList[i]);
							SearchMenu.style.display = "none";
							localStorage.setItem("Engine", nameList[i]);
							localStorage.setItem("searchType", i.toString());
						}
					}
				}
			}
			var SelectEngine = localStorage.getItem("Engine");
			if(SelectEngine===null){
				SelectEngine = Settings.get("Engine");
			}
			var SearchRes = Engines.search(SelectEngine);
			if (SearchRes !== -1) {
				var SearchType = document.getElementById("search-type");
				var newEngineList = Engines.get();
				Name = newEngineList[SearchRes].Name;
				Url = newEngineList[SearchRes].Url;
				Img = newEngineList[SearchRes].Img;
				Engines.select(Name, Url, Img, "0");
			}
		}
	}
	//创建Engines
	var Engines = new EnginesFn();

	//创建书签
	var Bookmarks = {
		//为Bookmarks添加change方法,能改变书签打开方式
		change: function() {
			var bookmarksOBJ = document.getElementsByClassName("site-wrap-a siteA siteAs");
			if (bookmarksOBJ.length !== 0) {
				for (let i = 0; i < bookmarksOBJ.length; i++) {
					bookmarksOBJ[i].target = "_self";
				}
			}
		}
	}




	//通过定时器修改网页数据
	var TimerID = setInterval(function() {
		var bookmarksOBJ = document.getElementsByClassName("site-wrap-a siteA siteAs");
		var searchType = document.getElementById("search-type");
		var searchMenu = document.getElementById("search-menu");
		var searchOBJ = document.getElementById("search");
		var SearchBtn = document.getElementById("search-btn");
		if ((bookmarksOBJ !== null) && (searchType !== null) && (searchMenu !== null) && (searchOBJ !==
				null) && (SearchBtn !== null)) {
			clearTimeout(TimerID);
			TimerID = -1;
            console.log("释放定时器!");
			Engines.init(searchMenu.children.length);
			if (Settings.get("EngineOnCurrentTab")) {
				Engines.change();
			}
			if (Settings.get("BookmarkOnCurrentTab")) {
				Bookmarks.change();
			}
			if (Settings.get("AddNewSearchEngine")) {
				Engines.add();
			}
		}
	}, 200);
	console.log("定时器:"+TimerID);
	//2s超时结束定时
	setTimeout(function() {
		if (TimerID !== -1) {
			clearTimeout(TimerID);
			console.log("2s超时释放定时器!");
		}
	}, 2000);
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址