您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add a dabblet.com link button to any gist with dabblet information
当前为
- // ==UserScript==
- // @name Gist to dabblet
- // @version 2.0.1
- // @description Add a dabblet.com link button to any gist with dabblet information
- // @license https://creativecommons.org/licenses/by-sa/4.0/
- // @namespace http://github.com/Mottie
- // @include https://gist.github.com/*
- // @grant GM_addStyle
- // @run-at document-idle
- // @author Rob Garrison
- // @icon64URL http://mottie.github.io/gist-to-dabblet/images/g2d.png
- // ==/UserScript==
- (function() {
- "use strict";
- GM_addStyle(".g2d-button { display:inline-block; width:18px; background-repeat:no-repeat; background-position:center top; }");
- var button,
- icons = {
- grey : "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAALVBMVEUAAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX///9VVVX37ue8AAAADnRSTlMARN1VIjMR7sy7ZneqEdMqVloAAABNSURBVAjXYyASOKk5qYEZcg/lHmJlWLzTeyj36DED97t374CMVwx+L1n0wFLrnjLYwRlP5R4zgKUU0l8kgBULML97znDB4t1RBgbJ5wDtZybkJeFKhwAAAABJRU5ErkJggg==",
- white : "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAKlBMVEUAAAD///////////////////////////////////////////////////+Gu8ovAAAADXRSTlMAd+7dRKqZiGbMIhEzr1+TpQAAAExJREFUCNdjIBL4BvgGgBmyF2QvYGUI3bW9IHtZi4H17t27QIYOQ+9FlrtgqVwFhlo4Q0H2NgNYKsH3GgNI8eUF7HdvgrRXMzA03wQARXIiwwVnjbIAAAAASUVORK5CYII=",
- black : "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJ1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADdEvm1AAAADHRSTlMAu3fdzBGqmYhmRO5Nxwc9AAAATElEQVQI12MgEugo6CiAGTICMgLYGKw9Z2wEZGwcGILPnDkDZLgy1JxiOgOWsklg8IEzEmQcGMBSE3ROMoAUH2RgOXMCqP20AtCW4wBomxaqzmf3OgAAAABJRU5ErkJggg=="
- },
- content = [
- "<a href='http://dabblet.com/gist/{gistid}' class='{class} tooltipped tooltipped-n' aria-label='Open at Dabblet.com'>",
- "<span class='g2d-button' style='background-image:url({icon})'> </span>",
- " dabblet",
- "</a>"
- ].join(""),
- hasClass = function(el, name) {
- if (el) {
- return el.classList ?
- el.classList.contains(name) :
- new RegExp("\\b" + name + "\\b").test(el.className);
- }
- return false;
- },
- closest = function(el, name) {
- while (el && !hasClass(el, name)) {
- el = el.parentNode;
- }
- return hasClass(el, name) ? el : null;
- },
- findDabbletGist = function() {
- var indx, len, el,
- list = [],
- hasDabblet = false,
- // main gist page
- gist = document.querySelector("#file-dabblet-css"),
- // list of gists page
- lists = document.querySelectorAll(".css-truncate-target");
- if (document.querySelectorAll(".gist-snippet").length) {
- indx = lists.length;
- while (indx--) {
- // only save dabblet files from list
- if (lists[indx].textContent.indexOf("dabblet.css") > -1) {
- list[list.length] = lists[indx];
- }
- }
- }
- len = list.length;
- if (gist || len) {
- if (len) {
- for (indx = 0; indx < len; indx++) {
- button = document.createElement("li");
- button.innerHTML = content
- .replace("{gistid}", list[indx].parentNode.href.match(/[a-f\d]+$/))
- .replace("{class}", "")
- .replace("{icon}", icons.grey);
- el = closest(list[indx], "gist-snippet-meta").querySelector(".gist-count-links li");
- el.parentNode.insertBefore(button, el);
- el.parentNode.style.zIndex = 1;
- }
- } else if (gist) {
- button = document.createElement("li");
- button.innerHTML = content
- .replace("{gistid}", window.location.pathname.match(/[a-f\d]+$/))
- .replace("{class}", "btn btn-sm")
- .replace("{icon}", icons.black);
- el = document.querySelector(".pagehead-actions li");
- el.parentNode.insertBefore(button, el);
- }
- }
- },
- targets = document.querySelectorAll("#js-repo-pjax-container, #js-pjax-container, .js-preview-body");
- Array.prototype.forEach.call(targets, function(target) {
- new MutationObserver(function(mutations) {
- mutations.forEach(function(mutation) {
- // preform checks before adding code wrap to minimize function calls
- if (!busy && mutation.target === target) {
- findDabbletGist();
- }
- });
- }).observe(target, {
- childList: true,
- subtree: true
- });
- });
- findDabbletGist();
- })();