// ==UserScript==
// @name BaiduNav - 百度首页优化
// @namespace shangandeyu
// @version 1.0.7
// @description 百度首页样式调整,删除多余元素,导航优化,导航图标获取,自定义搜索框透明度,专注首页导航页,支持登录(不可用)、未登录(不可用)状态,打造整洁好用的首页,优化首页体验
// @author shangandeyu
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABjElEQVRoge2YbbHDIBBFj4RIiIRIiIRKiIRKwEElREIlREIlVEIk9P0gvEmYQCAfsMzkzOw/ZnqXewNb4Obm5mqq3AKOoIBxqjqrkkgq4A38ZqVyCoqhAb4sxRfTQIuOiy2+iAYUbvGiG1jLezENuPJeRAMt/siIbkARJ/4HfHIItQnNu6+JOrVoQ0zet+qZWHt03kW5oS4Qf+TjroAOHeV2a+GRvMe60QSIbyxNo2/hWXmPqZdDT4X+buwkrDbQrixMWbYb9q7baxeozOLn1U/l0/M2wlPm/fTI5cr7GdVR6M6begAMAoTsrRb0bfgRIGZPLUaSpwBBsaWwaAS5YZ5jfGv+j1GbnG6M0++bBzGflsHVAGg3hsTiB9ZnIpcW5yw0J4UbZtf3aAmiQl/rV+16HSoE7UaPbto1/DnpOG9WGpkuotSc4UaPgFfrjn0zVJZd9xHjhoinlTViJtqQv47ZeBHWhMqkL4hQN0Q7AXqXfUdo9lMoBNdwKO4k2sKMALtuT0mIz/3NTWn8ARfzVP7n/lZLAAAAAElFTkSuQmCC
// @license GPL-3.0
// @run-at document-end
// @match https://www.baidu.com/
// @grant GM_xmlhttpRequest
// @grant GM_getValue
// @grant GM_setValue
// @grant unsafeWindow
// @connect *
// ==/UserScript==
(function() {
'use strict';
var $ = unsafeWindow.jQuery;
var user = document.getElementById("s_username_top");
if(user != null){
if($("#s_menu_mine").children('.s-menu-item-underline').length > 0) {
document.getElementsByTagName("html")[0].style.overflow="auto";
document.body.style.overflow="auto";
document.getElementsByClassName("set-btn set-edit")[0].addEventListener('click',function(){document.getElementById("sui-dialog-mask").remove()});
document.getElementById("lg").style.height="50px";
document.getElementById("lg").style.minHeight="50px";
// document.getElementsByClassName("s-skin-container s-isindex-wrap")[0].remove();
document.getElementById("head_wrapper").style.height="0px";
document.getElementById("head_wrapper").style.minHeight="0px";
document.getElementById("head").style.minHeight="0px";
document.getElementById("head").style.overflow="auto";
document.getElementById("s_fm").style.height="0px";
document.getElementById("s_fm").style.minHeight="0px";
document.getElementById("s_lg_img").remove();
document.getElementById("s_lg_img_new").remove();
document.getElementById("s_icons").innerHTML = '<a class="s-skin" href="#" onclick="return false;" data-tid="2001" title="换肤" style="visibility:hidden"><span class="s-icon s-icon-skin"></span><span class="title">换肤</span></a>';
document.getElementById("s_icons").addEventListener('mouseenter',function(){
document.getElementById("s_icons").children[0].style.visibility = "";
});
document.getElementById("s_icons").addEventListener('mouseleave',function(){
document.getElementById("s_icons").children[0].style.visibility = "hidden";
});
document.getElementsByClassName("show-vertical")[0].style.visibility="hidden";
let len = document.getElementsByClassName("mnav").length;
for(let i = 0; i < len; i++){
let mnav = document.getElementsByClassName("mnav")[0];
if (mnav != null) {
mnav.parentNode.removeChild(mnav);
}
}
document.getElementById("s_wrap").style.marginTop = "91px";
document.getElementsByClassName("s-block-container")[0].style.paddingTop = "10px";
// document.getElementsByClassName("s-menu-container")[0].remove();
document.getElementById("s_menu_gurd").remove();
document.getElementsByClassName("c-color-text")[0].innerHTML = "";
$.getJSON("https://api.ooopn.com/ciba/api.php", function(data){
document.getElementsByClassName("c-color-text")[0].innerHTML = data.ciba;
});
let setBar = document.getElementsByClassName("set-bar-content")[0];
let setMenu = setBar.getElementsByTagName("div")[0];
setBar.style.width = setMenu.offsetWidth+"px";
setBar.style.height = setMenu.offsetHeight+"px";
setMenu.style.display = "none";
setBar.addEventListener("mouseenter", function(){
setMenu.style.display = "";
});
setMenu.addEventListener("mouseleave", function(){
setMenu.style.display = "none";
});
document.getElementsByName("tj_briicon")[0].remove();
document.getElementById("s_usersetting_top").style.paddingRight = "4%";
document.getElementById("s_content_100").setAttribute('data-loaded', '1');
document.getElementsByClassName("rect")[0].remove();
document.getElementById("bottom_layer").remove();
document.getElementById("bottom_space").remove();
document.getElementsByClassName("p-sidebar js-player-open")[0].remove();
document.getElementsByClassName("qrcode-layer icon-mask-wrapper")[0].remove();
let icondiv = document.getElementsByClassName("nav-icon-normal");
if(icondiv.length > 0) {
let ids = new Array();
for(let i = 0; i < icondiv.length; i++) {
// if("" == icondiv[i].innerHTML) {
// continue;
// }
let url = icondiv[i].parentNode.href;
let domain = url.split('/');
let src = "";
for(let j = 0; j < domain.length && j < 3; j++) {
src += domain[j];
if(domain[j].indexOf("http") > -1) {
src += "//";
}
}
src += "/favicon.ico";
if (!GM_getValue(src)) {
GM_xmlhttpRequest({
method: "GET",
url: src,
synchronous: true,
responseType: "blob",
context: {"src": src, "div": icondiv[i]},
onload: function (res) {
let obj = res.context;
let src = obj.src;
let div = obj.div;
if (res.readyState == 4 && res.status == 200 || res.status == 304) {
let reader = new FileReader();
reader.readAsDataURL(res.response);
reader.onload = function () {
let img = new Image();
img.onload = function() {
GM_setValue(src, reader.result);
// localStorage[src] = reader.result;
div.innerHTML = '<img src="' + reader.result + '" width="32px" height="32px">';
div.className = "nav-icon";
};
img.src = res.finalUrl;
}
}
}
});
} else {
// icondiv[i].innerHTML = '<img src="' + localStorage[src] + '" width="32px" height="32px">';
icondiv[i].innerHTML = '<img src="' + GM_getValue(src) + '" width="32px" height="32px">';
icondiv[i].id = src;
ids.push(src);
}
}
for(let i = 0; i < ids.length; i++) {
document.getElementById(ids[i]).className = "nav-icon";
}
} else {
let imgs = document.getElementsByTagName("img");
setImg(imgs);
}
} else {
document.getElementsByTagName("html")[0].style.overflow="auto";
document.body.style.overflow="auto";
document.getElementsByClassName("set-btn set-edit")[0].addEventListener('click',function(){document.getElementById("sui-dialog-mask").remove()});
document.getElementById("lg").style.height="50px";
document.getElementById("lg").style.minHeight="50px";
// document.getElementsByClassName("s-skin-container s-isindex-wrap")[0].remove();
document.getElementById("head_wrapper").style.height="0px";
document.getElementById("head_wrapper").style.minHeight="0px";
document.getElementById("head").style.minHeight="0px";
document.getElementById("s_fm").style.height="0px";
document.getElementById("s_fm").style.minHeight="0px";
document.getElementById("s_lg_img").remove();
document.getElementById("s_lg_img_new").remove();
document.getElementById("s_icons").innerHTML = '<a class="s-skin" href="#" onclick="return false;" data-tid="2001" title="换肤" style="visibility:hidden"><span class="s-icon s-icon-skin"></span><span class="title">换肤</span></a>';
document.getElementById("s_icons").addEventListener('mouseenter',function(){
document.getElementById("s_icons").children[0].style.visibility = "";
});
document.getElementById("s_icons").addEventListener('mouseleave',function(){
document.getElementById("s_icons").children[0].style.visibility = "hidden";
});
document.getElementsByClassName("show-vertical")[0].style.visibility="hidden";
let fmOpacity = GM_getValue("fmOpacity");
if(fmOpacity == null || fmOpacity == "undefined") {
fmOpacity = 100;
}
document.getElementById("form").style.opacity = fmOpacity + "%";
let currentMousePos = {
x: 0
},
isDraging = false;
let startDrag = function(e) {
if(isDraging) {
return
}
isDraging = true;
currentMousePos = {
x: e.clientX
}
};
let draging = function(e) {
if(isDraging) {
doNewPos(e.clientX)
}
};
let doNewPos = function(x, ifend) {
let offset = Math.floor((x - currentMousePos.x) / 66 * 100 / 5) * 5;
let newOpacity = fmOpacity + offset;
if(newOpacity <= 0) {
newOpacity = 0
}
if(newOpacity > 100) {
newOpacity = 100
}
$("#s_fm_ajust_btn").css("left", newOpacity / 100 * 66 + "px");
$("#s_fm_ajust_txt").html(newOpacity + "%");
document.getElementById("form").style.opacity = newOpacity + "%";
ifend && (fmOpacity = newOpacity) && GM_setValue("fmOpacity", fmOpacity);
};
let endDrag = function(e) {
if(isDraging) {
doNewPos(e.clientX, true);
isDraging = false
}
};
let fmOpacityFlag = true;
document.getElementsByClassName("s-skin")[0].addEventListener('mouseup',function(){
if(fmOpacityFlag) {
setTimeout(function (){
document.getElementById("s_skin_layer_cell").style.width = "1076px";
$("#s_skin_opacity_set").after(`<div class="s-skin-opacity-set" style="margin-left:30px" id="s_skin_fm_opacity_set"><span class="bg-hideOrShowAjax" style="visibility:visible"><span class="bg-alphaBarTitle">搜索透明度</span><span class="bg-alphaBar" id="s_fm_ajust_bar"><span class="bg-alphaBarMoveBtn" id="s_fm_ajust_btn" style="left:` + fmOpacity / 100 * 66 + `px"><em class="bg-alphaBarOpacity" id="s_fm_ajust_txt">` + fmOpacity + `%</em></span></span></span></div>`);
$("#s_fm_ajust_btn").on("mousedown", function(e) {
startDrag(e)
});
$("#s_skin_layer").on("mousemove", function(e) {
e.preventDefault();
draging(e)
});
$("#s_skin_layer").on("mouseup", function(e) {
endDrag(e)
});
$("#s_skin_layer").on("mouseleave", function(e) {
endDrag(e)
});
$("#s_fm_ajust_btn").on("click", function(e) {
e.stopPropagation()
});
$("#s_fm_ajust_bar").on("click", function(e) {
currentMousePos.x = $("#s_fm_ajust_bar").offset().left + parseInt($("#s_fm_ajust_btn").css("left").replace(/px$/g, ""));
doNewPos(e.clientX, true)
})
}, 500);
}
fmOpacityFlag = false;
});
let len = document.getElementsByClassName("mnav").length;
for(let i = 0; i < len; i++){
let mnav = document.getElementsByClassName("mnav")[0];
if (mnav != null) {
mnav.parentNode.removeChild(mnav);
}
}
document.getElementById("s_wrap").style.marginTop="73px";
document.getElementsByClassName("s-block-container")[0].style.paddingTop = "4px";
// document.getElementsByClassName("s-menu-container")[0].remove();
document.getElementById("s_menu_gurd").remove();
document.getElementsByClassName("mine-title")[0].innerHTML = "";
$.getJSON("https://api.ooopn.com/ciba/api.php", function(data){
document.getElementsByClassName("mine-title")[0].innerHTML = data.ciba;
});
document.getElementsByName("tj_briicon")[0].remove();
document.getElementById("s_usersetting_top").style.paddingRight = "4%";
document.getElementsByClassName("s-code-blocks s-block-nav")[0].style.marginTop = "0px";
document.getElementById("s_content_100").setAttribute('data-loaded', '1');
document.getElementsByClassName("rect")[0].remove();
document.getElementsByClassName("s-more-bar")[0].remove();
document.getElementById("bottom_layer").remove();
document.getElementById("bottom_space").remove();
document.getElementsByClassName("p-sidebar js-player-open")[0].remove();
document.getElementsByClassName("qrcode-layer icon-mask-wrapper")[0].remove();
let imgs = document.getElementsByClassName("nav-icon");
setImg(imgs);
}
} else {
let len = document.getElementsByClassName("mnav").length;
for(let i = 0; i < len; i++){
let mnav = document.getElementsByClassName("mnav")[0];
if (mnav != null) {
mnav.parentNode.removeChild(mnav);
}
}
if(document.getElementById("virus-2020") != null) {
document.getElementById("virus-2020").style.display = "none";
}
if(document.getElementById("lg") != null) {
document.getElementById("lg").style.visibility="hidden";
}
let tj_briicon = document.getElementsByName("tj_briicon");
if(tj_briicon != null && tj_briicon.length != 0) {
tj_briicon[0].outerHTML='<a></a>';
}
if(document.getElementById("qrcode") != null) {
document.getElementById("qrcode").style.display = "none";
}
if(document.getElementById("ftConw") != null) {
document.getElementById("ftConw").style.display = "none";
}
if(document.getElementById("bottom_layer") != null) {
document.getElementById("bottom_layer").style.display = "none";
}
}
function setImg(imgs) {
for(let i = 0; i < imgs.length; i++) {
if("https://dss0.bdstatic.com/k4oZeXSm1A5BphGlnYG/icon/6000.png?3" != imgs[i].src) {
continue;
}
let url = imgs[i].parentNode.href ? imgs[i].parentNode.href : imgs[i].parentNode.parentNode.href;
// if("" == url) {
// continue;
// }
let domain = url.split('/');
let src = "";
for(let j = 0; j < domain.length && j < 3; j++) {
src += domain[j];
if(domain[j].indexOf("http") > -1) {
src += "//";
}
}
src += "/favicon.ico";
if (!GM_getValue(src)) {
GM_xmlhttpRequest({
method: "GET",
url: src,
responseType: "blob",
context: i + "|" + src,
onload: function (res) {
let context = res.context.split("|")
let index = context[0];
let src = context[1];
if (res.readyState == 4 && res.status == 200 || res.status == 304) {
let reader = new FileReader();
reader.readAsDataURL(res.response);
reader.onload = function () {
let img = new Image();
img.onload = function() {
// localStorage[src] = reader.result;
GM_setValue(src, reader.result);
imgs[index].src = reader.result;
};
img.onerror = function () {
setDefaultImg(imgs[index], src);
};
img.src = res.finalUrl;
}
} else {
setDefaultImg(imgs[index], src);
}
},
onerror: function(res) {
let context = res.context.split("|");
let index = context[0];
let src = context[1];
setDefaultImg(imgs[index], src);
},
onabort: function(res) {
let context = res.context.split("|")
let index = context[0];
let src = context[1];
setDefaultImg(imgs[index], src);
}
});
} else {
imgs[i].src = GM_getValue(src);
}
// imgs[i].outerHTML = '<img src="'+ src +'" class="nav-icon" width="16" height="16" onerror="https://dss0.bdstatic.com/k4oZeXSm1A5BphGlnYG/icon/6000.png?3">';
}
}
function setDefaultImg(imgTag, key) {
var url = "https://dss0.bdstatic.com/k4oZeXSm1A5BphGlnYG/icon/6000.png?3";
GM_xmlhttpRequest({
method: "GET",
url: url,
responseType: "blob",
onload: function (res) {
if (res.readyState == 4 && res.status == 200 || res.status == 304) {
let reader = new FileReader();
reader.readAsDataURL(res.response);
reader.onload = function () {
let img = new Image();
img.onload = function() {
GM_setValue(key, reader.result);
imgTag.src = reader.result;
};
img.onerror = function () {
imgTag.src = url;
};
img.src = res.finalUrl;
}
}
}
});
}
})();