@@ -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