您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add direct links to the picture and the page link to the Google Image Search results.
当前为
- // ==UserScript==
- ///////////////// In case it fails to update in TamperMonkey, visit https://github.com/svArtist/Google-Images-Direct-Links/raw/master/googleImagesDirectLinks.user.js directly ////////
- // @name Google Images direct links
- // @version 1.4
- // @description Add direct links to the picture and the page link to the Google Image Search results.
- // @namespace Google
- // @author Benjamin Philipp <benjamin_philipp [at - please don't spam] gmx.de>
- // @description Add direct links to the Google Images search results. LeftClick to open image, CTRL+LeftClick to open source page
- // @include /^https?:\/\/(www\.)*google\.[a-z\.]{2,5}\/search.*tbm=isch.*/
- // @require http://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js
- // @run-at document-body
- // @grant GM_xmlhttpRequest
- // @connect *
- // ==/UserScript==
- var maxtries = 10;
- var idle = true;
- var disableUpdate = false;
- function updatePage()
- {
- if($("#directLinkStyles").length<=0){
- disableUpdate = true;
- $("head").append("\
- <style id='directLinkStyles'>\
- .linkToTarget{\
- box-shadow: 3px 5px 10px rgba(0,0,0,0.5); \
- cursor: default;\
- position: absolute; \
- right:0; top:0; \
- opacity: 0; \
- background-color: rgba(255,255,255,0.5);\
- transition: background-color 0.5s, opacity 0.5s \
- }\
- a:hover .linkToTarget{\
- opacity: 0.6; \
- }\
- .linksdone:hover .linkToTarget, .linkToTarget:hover{\
- opacity: 1; \
- background-color: rgba(255,255,255,1);\
- }\
- .linksdone:hover .linkToTarget{\
- cursor: pointer;\
- }\
- .linkToTargetLink, .linkToTarget>span{\
- color: rgba(200,200,200, 0.7)!important; \
- padding: 3px 10px; \
- font-size: 28pt; \
- display: block; \
- font-weight: bold; \
- text-decoration: none;\
- transition: color 0.5s, font-size 0.5s, padding 0.5s; \
- }\
- .linkToTargetLink:hover{\
- color: rgba(155,177,233, 1)!important; \
- padding:8px 20px; \
- font-size: 36pt; \
- } \
- </style>");
- disableUpdate = false;
- }
- $(".rg_di.rg_bx a.rg_l:not(.linksdone):not([href='#'])").each(function(){
- var tp = this;
- var tppar = $(this).parent();
- var imin = tp.href.indexOf("imgurl=");
- if(imin<0)
- {
- $(tp).attr("resTries", $(tp).attr("resTries")?$(tp).attr("resTries")*1+1:1);
- if($(tp).attr("resTries")*1>=maxtries){
- console.log("This Link won't come up with a good fragment: " + $(tp).find("img")[0].src);
- return true;
- }
- updater();
- return true;
- }
- var linkconts = tp.href.substr(imin+7);
- var piclink = linkconts.substr(0,linkconts.indexOf("&"));
- var reflink = linkconts.substr(linkconts.indexOf("imgrefurl=")+10);
- reflink = decodeURIComponent(reflink.substr(0, reflink.indexOf("&")));
- piclink = decodeURIComponent(piclink);
- disableUpdate = true;
- var dirlink = $("<a class='linkToTargetLink' href='" + piclink + "'>+</a>");
- $(this).removeClass("linkswait");
- var templink = $(tppar).find(".linkToTarget.temp")[0];
- $(templink).removeClass("temp");
- $(templink).html(dirlink);
- $(this).addClass("linksdone");
- var urilink = $(tppar).find(".rg_ilmbg")[0];
- $(urilink).html("<a style='display: block; color: #fff; text-decoration: none;' href='" + reflink + "'>" + urilink.innerHTML + "</a>");
- $(dirlink).add(urilink).click(function(e){
- e.stopImmediatePropagation();
- });
- disableUpdate = false;
- });
- var notready = false;
- $(".rg_di.rg_bx a.rg_l[href='#']:not(.linksdone)").each(function(){
- notready = true;
- if(!$(this).hasClass("linkswait")){
- $(this).addClass("linkswait");
- $(this).append("<div class='linkToTarget temp'><span>...</span></div>");
- }
- });
- if(notready){
- updater();
- }
- }
- function updater(t = 1000){
- if(idle)
- {
- idle = false;
- updaterequest = false;
- updatePage();
- idletimer = setTimeout(function(){
- idle = true;
- if(updaterequest)
- updatePage();
- }, t);
- }
- else
- {
- updaterequest = true;
- }
- }
- var bodyObserver = false;
- function observeResults(){
- // console.log("observing");
- resultsObserver = new MutationObserver(updater);
- resultsObserver.observe($("#ires #rg")[0], {subtree: true, childList: true});
- if(bodyObserver !== false)
- bodyObserver.disconnect();
- }
- if($("#ires #rg").length>0){
- observeResults();
- }
- else{
- bodyObserver = new MutationObserver(function(mutations){
- if(disableUpdate || !idle){
- return;
- }
- if($("#ires #rg").length>0)
- {
- observeResults();
- }
- });
- bodyObserver.observe($("body")[0], {subtree: true, childList: true});
- }
- updatePage();