Greasy Fork

Greasy Fork is available in English.

简法主页功能增强

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

当前为 2021-10-10 提交的版本,查看 最新版本

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

(function() {
	//settings对象为设置项
	var settings={
		searchEngine:true,//true:当前标签页打开搜索结果;false:新标签页打开搜索结果
		bookMarks:true,//true:当前标签页打开书签网页;false:新标签页打开书签网页
		//get方法获取settings对象属性
		get:function(key){
			return this[key];
		},
		//init方法初始化搜索引擎与书签的打开方式
		init:function(){
			if(this.searchEngine){
				searchEngine.init();
			}
			if(this.bookMarks){
				bookMarks.init();
			}
			console.log("简法主页功能增强:初始化完成");
		},
		//monitor方法用于检错、监控修改结果
		monitor:function(){
			var Timer=setInterval(function(){
				if(settings.get("searchEngine")){
					searchEngine.monitor();
				}
				if(settings.get("bookMarks")){
					bookMarks.monitor();
				}
			},500);
			console.log("简法主页功能增强:检错程序启动(定时器ID:"+Timer+")");
		},
		//on方法用于启动整个程序
		on:function(){
			console.log("简法主页功能增强:主程序启动");
			this.init();
			this.monitor();
		}
	}
	//searchEngine对象为搜索引擎项
	var searchEngine = {
		//change方法用于改变搜索按钮类型,从而便于覆盖搜索打开方式
		change: function() {
			var searchBtn = document.getElementById("search-btn");
			searchBtn.type = "text";
		},
		//click方法用于覆盖原搜索按钮方法
		click: function() {
			var searchBar = document.getElementById("search");
			var url = searchBar.getAttribute("data-engine-start");
			var val = searchBar.value;
			location.href = url + val;
		},
		//enter方法用于覆盖原回车搜索方法
		enter: function(event) {
			if (event.keyCode === 13) {
				var searchBtn=document.getElementById("search-btn");
				searchBtn.click();
			}
		},
		//init方法用于初始化搜索引擎,覆盖新方法
		init:function(){
			searchEngine.change();
			var searchBtn = document.getElementById("search-btn");
			searchBtn.onclick=searchEngine.click;
			var searchBar = document.getElementById("search");
			searchBar.onkeydown=searchEngine.enter;
		},
		//monitor方法用于检错、监控修改结果,若出错则调用init方法重新覆盖
		monitor:function(){
			var searchBtn = document.getElementById("search-btn");
			var searchBar = document.getElementById("search");
			if(searchBtn.type!=="text"||searchBtn.onclick===null||searchBar.onkeydown===null){
				this.init();
			}
		}
	}
	var bookMarks={
		//change方法用于改变书签打开方式
		change:function(Obj){
			if(Obj.target!==""){
				Obj.target="";
			}
		},
		//init方法用于遍历书签并调用change方法改变打开方式
		init:function(){
			var siteBox=document.getElementById("site-box");
			var aBox,aBoxLen;
			try{
				aBox=siteBox.children;
				aBoxLen=aBox.length;
			}catch(e){
				aBox=null;
				aBoxLen=0;
			}
			if(aBoxLen>0){
				for(let i=0;i<aBoxLen;i++){
					this.change(aBox[i]);
				}
			}
		},
		//monitor方法用于检错程序
		monitor:function(){
			this.init();
		}
	}
	//启动主程序
	settings.on();
})();