Skip to content

Commit ff412ab

Browse files
committed
Update Picviewer CE+.user.js
1 parent ae60266 commit ff412ab

File tree

1 file changed

+115
-14
lines changed

1 file changed

+115
-14
lines changed

Picviewer CE+/Picviewer CE+.user.js

Lines changed: 115 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16198,10 +16198,33 @@ ImgOps | https://imgops.com/#b#`;
1619816198
e.preventDefault();
1619916199
self.selectViewmore(imgSpan, curNode.dataset.src);
1620016200
let loadError = e => {
16201-
let i = document.createElement("img");
16202-
i.src = curNode.dataset.thumbSrc;
16203-
curNode.dataset.src = curNode.dataset.thumbSrc;
16204-
popupImgWin(i);
16201+
if (/^blob:/.test(media.src)) {
16202+
let i = document.createElement("img");
16203+
i.src = curNode.dataset.thumbSrc;
16204+
curNode.dataset.src = curNode.dataset.thumbSrc;
16205+
popupImgWin(i);
16206+
} else {
16207+
_GM_xmlhttpRequest({
16208+
method: 'GET',
16209+
url: dataset(node, 'src'),
16210+
responseType: 'blob',
16211+
onload: function(response) {
16212+
const blobUrl = URL.createObjectURL(response.response);
16213+
let i = document.createElement("img");
16214+
i.src = blobUrl;
16215+
curNode.dataset.src = curNode.dataset.thumbSrc;
16216+
popupImgWin(i);
16217+
const releaseBlob = () => URL.revokeObjectURL(blobUrl);
16218+
window.addEventListener('beforeunload', releaseBlob);
16219+
},
16220+
onerror: function() {
16221+
let i = document.createElement("img");
16222+
i.src = curNode.dataset.thumbSrc;
16223+
curNode.dataset.src = curNode.dataset.thumbSrc;
16224+
popupImgWin(i);
16225+
}
16226+
});
16227+
}
1620516228
};
1620616229
let loadImg = async() => {
1620716230
self.showTips("Loading image...");
@@ -16259,8 +16282,31 @@ ImgOps | https://imgops.com/#b#`;
1625916282
popupImgWin(this);
1626016283
},
1626116284
error:function(e){
16262-
self.showTips("");
16263-
loadError();
16285+
if (/^blob:/.test(imgSrc)) {
16286+
self.showTips("");
16287+
loadError();
16288+
} else if (mode == "image" || mode == "") {
16289+
_GM_xmlhttpRequest({
16290+
method: 'GET',
16291+
url: imgSrc,
16292+
responseType: 'blob',
16293+
onload: function(response) {
16294+
const blobUrl = URL.createObjectURL(response.response);
16295+
self.showTips("");
16296+
let img = document.createElement("img");
16297+
popupImgWin(img);
16298+
const releaseBlob = () => URL.revokeObjectURL(blobUrl);
16299+
window.addEventListener('beforeunload', releaseBlob);
16300+
},
16301+
onerror: function() {
16302+
self.showTips("");
16303+
loadError();
16304+
}
16305+
});
16306+
} else {
16307+
self.showTips("");
16308+
loadError();
16309+
}
1626416310
}
1626516311
});
1626616312
}
@@ -16692,9 +16738,36 @@ ImgOps | https://imgops.com/#b#`;
1669216738

1669316739
if(e.type=='error'){
1669416740
if (loadingIndicator && loadingIndicator.style) loadingIndicator.style.display='';
16695-
self.errorSpan=ele;
16696-
if(preImgR)preImgR.abort();
16697-
self.loadImg(this, ele,true);
16741+
if (/^blob:/.test(src)) {
16742+
self.errorSpan=ele;
16743+
if(preImgR)preImgR.abort();
16744+
self.loadImg(this, ele,true);
16745+
} else {
16746+
_GM_xmlhttpRequest({
16747+
method: 'GET',
16748+
url: src,
16749+
responseType: 'blob',
16750+
onload: function(response) {
16751+
const blobUrl = URL.createObjectURL(response.response);
16752+
self.slideShow.run('loadEnd');
16753+
let img = document.createElement("img");
16754+
img.src = blobUrl;
16755+
imgReady(blobUrl, {
16756+
ready:function(){
16757+
self.loadImg(img, ele, false);
16758+
self.slideShow.run('loadEnd');
16759+
}
16760+
});
16761+
const releaseBlob = () => URL.revokeObjectURL(blobUrl);
16762+
window.addEventListener('beforeunload', releaseBlob);
16763+
},
16764+
onerror: function() {
16765+
self.errorSpan=ele;
16766+
if(preImgR)preImgR.abort();
16767+
self.loadImg(this, ele, true);
16768+
}
16769+
});
16770+
}
1669816771
};
1669916772

1670016773
self.slideShow.run('loadEnd');
@@ -23360,12 +23433,40 @@ ImgOps | https://imgops.com/#b#`;
2336023433

2336123434
var opts = {
2336223435
error: function(e) {
23363-
if (Array.isArray(imgSrcs)) {
23364-
var src = imgSrcs.shift();
23365-
if (src) {
23366-
self.loadImg(src, imgSrcs, nextFun);
23367-
return;
23436+
if (/^blob:/.test(imgSrc)) {
23437+
if (Array.isArray(imgSrcs)) {
23438+
var src = imgSrcs.shift();
23439+
if (src) {
23440+
self.loadImg(src, imgSrcs, nextFun);
23441+
return;
23442+
}
2336823443
}
23444+
} else if (mode == "image" || mode == "") {
23445+
_GM_xmlhttpRequest({
23446+
method: 'GET',
23447+
url: media.src,
23448+
responseType: 'blob',
23449+
onload: function(response) {
23450+
const blobUrl = URL.createObjectURL(response.response);
23451+
self.loadImg(blobUrl, imgSrcs, nextFun);
23452+
const releaseBlob = () => URL.revokeObjectURL(blobUrl);
23453+
window.addEventListener('beforeunload', releaseBlob);
23454+
},
23455+
onerror: function() {
23456+
if (Array.isArray(imgSrcs)) {
23457+
var src = imgSrcs.shift();
23458+
if (src) {
23459+
self.loadImg(src, imgSrcs, nextFun);
23460+
return;
23461+
}
23462+
} else {
23463+
self.error('', this, e);
23464+
}
23465+
}
23466+
});
23467+
return;
23468+
} else {
23469+
self.error('', this, e);
2336923470
}
2337023471

2337123472
if(nextFun) nextFun();

0 commit comments

Comments
 (0)