您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Google+ Column Adjustment Tool
/* Following code belongs to Avatars Plus! and More for Google+. Copyright (C) 2016 Jackson Tan This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ // ==UserScript== // @id GPlusColumnAdj // @name Google+ Column Adjustments // @version 0.1.13 // @namespace gplus.columnadj // @author Jackson Tan // @description Google+ Column Adjustment Tool // @include https://plus.google.com/* // @exclude /https://plus\.google\.com(/u/\d+)?/?stream/circles/.+/i // @exclude /https://plus\.google\.com(/u/\d+)?/?b/.+/i // @run-at document-end // @grant GM_xmlhttpRequest // ==/UserScript== GM_addStyle = function (css) { var head = document.getElementsByTagName('head')[0], style = document.createElement('style'); if (!head) { return } style.type = 'text/css'; try { style.innerHTML = css } catch (x) { style.innerText = css } head.appendChild(style); } function keyPress(el, keyCode) { var eventObj = document.createEventObject ? document.createEventObject() : document.createEvent("Events"); if (eventObj.initEvent) { eventObj.initEvent("keydown", true, true); } eventObj.keyCode = keyCode; eventObj.which = keyCode; el.dispatchEvent ? el.dispatchEvent(eventObj) : el.fireEvent("onkeydown", eventObj); } function minIndexThreeNum(a, b, c) { var result = Math.min(Math.min(a, b), c); if (result == a) return 0; else if (result == b) return 1; return 2; } function appendHtmlToNode(html, node) { node.innerHTML += html; } function buildElem(tagName, className, attr1, val1, attr2, val2) { var elem = document.createElement(tagName); elem.className = className; elem.setAttribute(attr1, val1); elem.setAttribute(attr2, val2); return elem; } function buildArr(length, colA, colB, modulo) { var newColumn = new Array(); var a = 0, b = 0, flag = false, count = 0; for (var i = 0; i < length; i++) { flag = !flag; if (i != 0 && (i + 1) % modulo == 0) { if (flag) newColumn[newColumn.length] = colA[a + 1]; else newColumn[newColumn.length] = colB[b]; } if (flag) { a++; } else { b++; } } return newColumn; } function buildColumn(colArr, className, jsName, insertTarget) { var colDiv = buildElem("div", className, "jsName", jsName, "role", "list"); for (var i = 0; i < colArr.length; i++) { appendHtmlToNode(colArr[i].outerHTML, colDiv); colArr[i].outerHTML = ""; } insertTarget.appendChild(colDiv); } function hideSidebar(toggleBtnClass, sidebarPanelClass, contentPanelClass) { document.getElementsByClassName(toggleBtnClass)[0].setAttribute("aria-expanded", "false"); document.getElementsByClassName(sidebarPanelClass)[0].parentNode.removeChild(document.getElementsByClassName(sidebarPanelClass)[0]); //document.getElementsByClassName(contentPanelClass)[0].className = contentPanelClass; } function hideSidebarKeyPress(elem, key) { keyPress(elem, key); } function fixSandwichAlign(sandClass, newAlign) { document.getElementsByClassName(sandClass)[0].childNodes[0].style.top = newAlign + "px"; } //var listenerPostInsertion = function (e) { // if (e.target.nodeType != 3 && e.target.tagName == postTagName) { // e.target.parentNode.removeEventListener('DOMNodeInserted', listenerPostInsertion, false); // console.log(minIndexThreeNum(col0.length - 1, col1.length, colParent.childNodes[2].childNodes.length)); // console.log(e.target.outerHTML); // insertTargetNode.childNodes[minIndexThreeNum(col0.length - 1, col1.length, colParent.childNodes[2].childNodes.length)].innerHTML += e.target.outerHTML; // e.target.outerHTML = none; // setTimeout(function () { e.target.parentNode.addEventListener('DOMNodeInserted', listenerPostInsertion, false); }, 500); // } //}; function replaceImg(target) { if (target && target.src) { target.src = target.src.replace(/(-no)+\/.+/g, ""); target.parentNode.parentNode.parentNode.removeChild(target.parentNode.parentNode.nextSibling); return target.src; } } function batchReplace(targets) { if (targets && targets.length) for (var i = 0; i < targets.length ; i++) { if (targets[i].src.match("(-no)+\/.+")) replaceImg(targets[i]); } } function onLoad() { //var listenerPostInsertion = function (e) { // if (e.target.nodeType != 3 && e.target.tagName == postTagName) { // var elem = document.createElement("DIV"); // elem.innerHTML = e.target.outerHTML; // e.target.outerHTML = ""; // console.log(elem.innerHTML); // insertTargetNode.childNodes[minIndexThreeNum(col0.length - 1, col1.length, colParent.childNodes[2].childNodes.length)].appendChild(elem.childNodes[0]); // } //}; var gifImageInsertionListener = function (e) { if (e.target.nodeType != 3 && e.target.tagName == postTagName) { batchReplace(e.target.getElementsByClassName('JZUAbb')); // Gif images in posts } } var streamColClass = "H68wj jxKp7"; var streamColJsName = "dJDgTb"; var sidebarToogleBtnClass = "mUbCce p9Nwte"; var sidebarPanelClass = "OFyC1e"; var contentPanelClass = "gLYlfd Jvazdb nWGHWc G6GRIc"; var colParent = document.getElementsByClassName(streamColClass)[0].parentNode; var col0 = document.getElementsByClassName(streamColClass)[0].childNodes; var col1 = document.getElementsByClassName(streamColClass)[1].childNodes; var len_col0 = col0.length - 1; var len_col1 = col1.length; var total_col = 3; var newColArr = buildArr(len_col0 + len_col1, col0, col1, total_col); //buildColumn(newColArr, streamColClass, streamColJsName, colParent); var postTagName = "C-FPDNBB"; var insertTargetNode = colParent; var sandwichNavClass = "xjKiLb"; //hideSidebar(sidebarToogleBtnClass, sidebarPanelClass, contentPanelClass); hideSidebarKeyPress(document.body, 37); fixSandwichAlign(sandwichNavClass, -18); //document.getElementsByClassName(streamColClass)[0].addEventListener('DOMNodeInserted', listenerPostInsertion, false); //document.getElementsByClassName(streamColClass)[1].addEventListener('DOMNodeInserted', listenerPostInsertion, false); batchReplace(document.body.getElementsByClassName('JZUAbb')); // Gif images in posts document.getElementsByClassName(streamColClass)[0].addEventListener('DOMNodeInserted', gifImageInsertionListener, false); document.getElementsByClassName(streamColClass)[1].addEventListener('DOMNodeInserted', gifImageInsertionListener, false); document.getElementsByClassName(streamColClass)[2].addEventListener('DOMNodeInserted', gifImageInsertionListener, false); } document.addEventListener("DOMContentLoaded", onLoad, false);