Displaying and linking to the original picture on the thumbnail container, instead of a container layout. Especially a goodie for people who were benefitted with similar function provided by Pixiv++ (and maybe now, but if they want to use this as lightweight on another place).
// ==UserScript==
// @namespace com.whoopsworkshop.hkgsherlock.userjs.pixiv_illust_full
// @id com.whoopsworkshop.hkgsherlock.userjs.pixiv_illust_full
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAAA3NCSVQICAjb4U/gAAAAYnpUWHRSYXcgcHJvZmlsZSB0eXBlIEFQUDEAAHicVcixDYAwDADB3lN4hHccHDIOQgFFQoCyf0EBDVee7O1so696j2vrRxNVVVXPkmuuaQFmXgZuGAkoXy38TEQNDyseBiAPSLYUyXpQ8HMAAAUhSURBVFiF7ZltbBRFHMafmd29Xq9vh32lFNsCpYS38CZqFYtBG1FD0Eg0qBGNQQJBEZSgX/xmbUJCCKJGQxASEzQBCyRFECKQkFSFtOUKpWdbELgXoC29tne9u92d8cOVsne97W4LS/zAk/tyz8zO/G7mPzP/nSP46iiSSQSKbQJLWnZvUjiuyapeqaj7GNAe1X3MOtEH3+XIeghkpIdARtJdZcnFAcbBOHjsoykiBBSgBJSCWA3EOFQGhUEU3i4dN2981uTstNwMe6ZdEgXKOQ9GlM7+yJXu4Flvzw9tXZBVSAKEsZARvY1xUApDRFlUmLl6blFlWf7ER9LMNNp+s7f2vOeT+n/BOSRhVFg6QByQVTBeU1HyzuOl+ZmpCeVd/WFfYKA7FGWMO2xCXkZqSU768GZ+Pnvljd9aQAhEs8GaDEhWwbFrSdl7FVO0dlhWjzR7Drb497R1QuWg5O5PZxyMvzY5e9W8iS/NKor7aRwf7j/3tcsPhzR6IMYRkqsXlW5+fjoldwfaHxj48njLjibvYGQIOnPAOGQVIq1bNmvpzAnakoONV5cfOI8022iAIspj2Y7aNxcWOh3aGtv/uLThxD9wSBDMDTsHBuRV5bm7Vy7U2vUdt57c/SfSDZjoYBP90Z2VU/5atziBBsCOJi/SbWZpABDAIf3Y0bX4u9Na+4lJuYdXzEFINgJiHLLqWvPU2sqpMYvzuBpp5lG0koRTncH39/2t9V6eXbRpTiGUkZIaOjFF7Pv0uZkTxsW+1xy70Oy5PRaCZEy7Wm7+ftGr9ba+Mhcc4HrPgLrXL063D8b/lkNNW0602SXh/gABSJWqal0J3k9V5dBP0OhQ99VHL9Q0eEwuTrMigKIeafZovZULS6HqztpgfJxs9X9+5jLsozzazEgSdp29muBtmD1ej4kCUBl/9pcGOIw3ibGIkv2XuxO8F8rzoSSPI3o7FBUogcrv5Yg2ECFtN3u1xoxCJ5jOCG062AjAQhoAFJ6ekNYodDr0Fhrd3dEt1hxDigXRMyRC+sJx+yElBDT5GFCIVOUWj9BoRAHraTjPSh22YphOUFvMMtj3o/GZnbcnpDcKDwSIkuLsuPTN5bkNmrxr64EUtnHW+ATv8EU/RL2gtloR5YOKSVpDVtnOZr9ePmMxkMLeKs+dmp+l9b497Yak26+VQBxg/PsVC7ReTyj60cl26CcUlgFxIBRtXV2Raovre/ne+pGPcGMghetnU3pSGaLKpbWLEiZr44GGU7eCenu0WaCyjBSEZCgsMbfVQwlGXy9yBrdUlRfE0WyubdzW7IPNIPszPsJq361w3wj82nR9u8vnC4QhUFACQkDubPEc4ByMQ2GrpuVtqiwbSohjiijqq3vq67y9Zk7MYS+KYcW95umy/MyktfvCstsfuNId9AQGOkPRUFRlnKeniMVOx4yCrAWlOeKw6TjcdG3ZoWYIxOR7izHyN6fdVdMKpuRlAsiwS/NLcuaX5Jhpus51ff3x1o7eCFJE88elMdDWc9fXHXfDYftsRv4zpTkzC51F+lcOXf3hhqvdda03trl8AGATRpsWG9fOEGks868+76tu9EJl4JjstM8Z58hLk9JEIcp4IKK0BcJnbgWhMggUIhlzgmX6MYI7NxgCgPaI0u7r1aw7AgKkCLHSe9FYE8XYKrMgk/rf3TE+BDKSMRAf4WbAAsUDMY4BmcRHap/C8AD/hdEAMb68IKPni6WxTXlIlz9esu/F6SPcV9xf/QdhL+PXM2v0PQAAAABJRU5ErkJggg==
// @name Pixiv illustration full size link converter
// @description Displaying and linking to the original picture on the thumbnail container, instead of a container layout. Especially a goodie for people who were benefitted with similar function provided by Pixiv++ (and maybe now, but if they want to use this as lightweight on another place).
// @author hkgsherlock
// @version 201502100051+8
// @include /^https?:\/\/www\.pixiv\.net\/member_illust\.php?.*mode=(medium|manga).*$/
// @grant none
// @license Public Domain for source code only.
// ==/UserScript==
//
// they changed the layout again lag, fack u
// YOU SEE ME TROLLIN', THEY HATIN'
//
// Well, just let users choose what they want. They're still your users even you're not creating a dynasty which controls how they behave.
// And you're not even the Facebook.
//
function pixiv_illust_full() {};
pixiv_illust_full.prototype.addFullSizePageCSS = function() {
var str = "";
str += "img.fullsize.limit600 { max-width: 600px; max-height: 600px; } \r\n";
str += "img.fullsize.limit1200 { max-width: 1200px; max-height: 1200px; } \r\n";
var addStyle = document.createElement("style");
addStyle.setAttribute('type', 'text/css');
addStyle.innerHTML = str;
document.head.appendChild(addStyle);
}
pixiv_illust_full.prototype.pageGrabDOM = function(url, uniqueSel, callback) {
/*
GM_xmlhttpRequest({
method: "GET",
url: url,
onload: function(response) {
var content = new DOMParser().parseFromString(response.responseText, "text/html");
callback(content.querySelector(uniqueSel));
}
});
*/
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
var content = new DOMParser().parseFromString(xhr.responseText, "text/html");
callback(content.querySelector(uniqueSel));
}
};
xhr.open("GET", url, true);
xhr.send();
};
pixiv_illust_full.prototype.dropThumbPutFull = function(worksDisplay, src_full) {
var thumb = worksDisplay.querySelector('._layout-thumbnail');
var medium = thumb.querySelector('img');
// creating new img for us
var full = medium.cloneNode();
full.classList.remove('medium');
full.src = src_full;
full.classList.add('fullsize');
full.classList.add('limit600');
// full.style.maxWidth = '600px';
// full.style.maxHeight = '600px';
// creating back the link
var link = document.createElement('a');
link.href = src_full;
link.target = '_blank'
link.appendChild(full);
link.classList.add('_layout-thumbnail');
// replace
thumb.remove();
worksDisplay.appendChild(link);
};
pixiv_illust_full.prototype.do = function() {
// getting params as assoc arr for detecting mode
var params = {};
document.location.search.substr(1).split('&').forEach(function(x) {
var arr = x.split('=');
arr[1] && (params[arr[0]] = arr[1]);
});
if (params.mode === undefined) return;
this.addFullSizePageCSS();
if (params.mode === "medium") {
// store references using
var wksDisp = document.querySelector('div.works_display');
if (wksDisp === null) return; // this script loads on iframe pages too! they don't have that DOM, don't waste time
// if manga then is null
var big = document.querySelector('.original-image');
if (big !== null) { // submitted as a illustration
// get the src(href) of the big (~full)
var fSrc = big.src || big.attributes['data-src'].value;
this.dropThumbPutFull(wksDisp, fSrc);
} else { // submitted as manga
var aManga = wksDisp.querySelector('a.manga:not(.multiple)');
if (aManga === null) return; // if multi-page then quit
var that = this; // trick
this.pageGrabDOM(aManga.href, 'img:not(.user-icon)', function(ee) {
var imgUrl = /* aManga.classList.contains('manga') ? ee.attributes['data-src'].value : */ ee.src;
that.dropThumbPutFull(wksDisp, imgUrl);
});
}
} else if (params.mode === "manga") {
var imgs = document.querySelectorAll('div.item-container');
// if can't select then result.length == 0 --> not loop
var that = this; // trick
Array.forEach(imgs, function(e, i) {
var apply = e.querySelector('img.image');
var leftLargeLink = e.querySelector('a.full-size-container');
if (apply === null) return;
apply.attributes.removeNamedItem('data-src'); // remove first, prevent them from adding thumb back
that.pageGrabDOM(e.querySelector('a.full-size-container').href, 'img', function(ee) {
leftLargeLink.href = apply.src = ee.src;
apply.classList.add('fullsize');
apply.classList.add('limit1200');
});
});
}
};
var pif = pif || new pixiv_illust_full();
pif.do();