66// @description Powerful picture viewing tool online, which can popup/scale/rotate/batch save pictures automatically
77// @description:zh-CN 在线看图工具,支持图片翻转、旋转、缩放、弹出大图、批量保存
88// @description:zh-TW 線上看圖工具,支援圖片翻轉、旋轉、縮放、彈出大圖、批量儲存
9- // @version 2021.12.27 .1
9+ // @version 2021.12.28 .1
1010// @created 2011-6-15
1111// @namespace http://userscripts.org/users/NLF
1212// @homepage http://hoothin.com
@@ -5410,6 +5410,20 @@ Trace Moe | https://trace.moe/?url=#t#`;
54105410 console.log(e.toString());
54115411 }
54125412 });
5413+ var bgReg=/.*url\(\s*["']?(.+?)["']?\s*\)/i;
5414+ var bgImgs=Array.from(document.querySelectorAll('*'))
5415+ .reduce((total, node) => {
5416+ if(!node.className || !node.className.indexOf || node.className.indexOf("pv-")==-1){
5417+ let prop = unsafeWindow.getComputedStyle(node).backgroundImage;
5418+ let match = bgReg.exec(prop)
5419+ if (match) {
5420+ node.src=match[1];
5421+ total.push(node);
5422+ }
5423+ }
5424+ return total;
5425+ }, []);
5426+ if(bgImgs)imgs=imgs.concat(bgImgs);
54135427 // 排除库里面的图片
54145428 imgs = imgs.filter(function(img){
54155429 return !(container.contains(img) || (preloadContainer&&preloadContainer.contains(img)));
@@ -5418,7 +5432,7 @@ Trace Moe | https://trace.moe/?url=#t#`;
54185432 // 已经在图库里面的
54195433 var self = this;
54205434 imgs.forEach(function(img) {
5421- if(!img.getAttribute(" src") ) return;
5435+ if(!img.src) return;
54225436 if (newer && self._dataCache[img.src]) return;
54235437
54245438 var result = findPic(img);
@@ -8861,7 +8875,11 @@ Trace Moe | https://trace.moe/?url=#t#`;
88618875 var buttonType=this.buttonType;
88628876
88638877 if(buttonType=='gallery'){
8864- var allData=this.getAllValidImgs();
8878+ if(!gallery){
8879+ gallery=new GalleryC();
8880+ gallery.data=[];
8881+ }
8882+ var allData=gallery.getAllValidImgs();
88658883 allData.target=this.data;
88668884 this.data=allData;
88678885 };
@@ -8923,27 +8941,6 @@ Trace Moe | https://trace.moe/?url=#t#`;
89238941 };
89248942
89258943
8926- },
8927- getAllValidImgs:function(){
8928- var doc=window.parent==window?document:window.parent.document;
8929- var validImgs=[],imgsHandle=function(imgs){
8930- arrayFn.forEach.call(imgs,function(img,index,imgs){
8931- var result=findPic(img);
8932- if(result){
8933- validImgs.push(result);
8934- };
8935- });
8936- };
8937- imgsHandle(doc.getElementsByTagName('img'));
8938- arrayFn.forEach.call(doc.querySelectorAll("iframe"),function(iframe){
8939- if(iframe.src && iframe.src.replace(/\/[^\/]*$/,"").indexOf(location.hostname)!=-1)
8940- try{
8941- imgsHandle(iframe.contentWindow.document.getElementsByTagName('img'));
8942- }catch(e){
8943- console.log(e.toString());
8944- }
8945- });
8946- return validImgs;
89478944 },
89488945 open:function(){
89498946 switch(this.buttonType){
@@ -9661,30 +9658,9 @@ Trace Moe | https://trace.moe/?url=#t#`;
96619658 w: parseFloat(imgCStyle.width),
96629659 };
96639660 var imgAS={//实际尺寸。
9664- h:img.naturalHeight,
9665- w:img.naturalWidth,
9661+ h:img.naturalHeight||imgCS.h ,
9662+ w:img.naturalWidth||imgCS.w ,
96669663 };
9667- if(!(imgAS.w==imgCS.w && imgAS.h==imgCS.h)){//如果不是两者完全相等,那么被缩放了.
9668- if(prefs.floatBar.sizeLimitOr){
9669- if(imgCS.h <= prefs.floatBar.minSizeLimit.h && imgCS.w <= prefs.floatBar.minSizeLimit.w){//最小限定判断.
9670- return;
9671- }
9672- }else{
9673- if(imgCS.h <= prefs.floatBar.minSizeLimit.h || imgCS.w <= prefs.floatBar.minSizeLimit.w){//最小限定判断.
9674- return;
9675- }
9676- }
9677- }else{
9678- if(prefs.floatBar.sizeLimitOr){
9679- if(imgCS.w <= prefs.floatBar.forceShow.size.w && imgCS.h <= prefs.floatBar.forceShow.size.h){
9680- return;
9681- }
9682- }else{
9683- if(imgCS.w <= prefs.floatBar.forceShow.size.w || imgCS.h <= prefs.floatBar.forceShow.size.h){
9684- return;
9685- }
9686- }
9687- }
96889664 if(!src && matchedRule && !base64Img){// 通过高级规则获取.
96899665 // 排除
96909666 if (matchedRule.exclude && matchedRule.exclude.test(imgSrc)) {
@@ -9792,6 +9768,8 @@ Trace Moe | https://trace.moe/?url=#t#`;
97929768 iPASrc: iPASrc, // 图片的第一个父a元素的链接地址
97939769 sizeH:imgAS.h,
97949770 sizeW:imgAS.w,
9771+ imgCS:imgCS,
9772+ imgAS:imgAS,
97959773
97969774 noActual:noActual,
97979775 xhr: xhr,
@@ -10020,7 +9998,7 @@ Trace Moe | https://trace.moe/?url=#t#`;
100209998
100219999 var target = e.target;
1002210000
10023- if (!target || target.id=="pv-float-bar-container" || (target.className && (target.className.indexOf('pv-') != -1 || target.classList.contains("ks-imagezoom-lens")))) {
10001+ if (!target || target.id=="pv-float-bar-container" || (target.className && target.className.indexOf && (target.className.indexOf('pv-') != -1 || target.classList.contains("ks-imagezoom-lens")))) {
1002410002 return;
1002510003 }
1002610004
@@ -10059,8 +10037,9 @@ Trace Moe | https://trace.moe/?url=#t#`;
1005910037 if (target.nodeName != 'IMG'){
1006010038 if(target.nodeName == "AREA")target=target.parentNode;
1006110039 var targetBg;
10040+ var bgReg=/.*url\(\s*["']?(.+?)["']?\s*\)/i;
1006210041 if(prefs.floatBar.listenBg && hasBg(target)){
10063- targetBg = unsafeWindow.getComputedStyle(target).backgroundImage.replace(/.*url\(["'](.*)["']\)/i ,"$1");
10042+ targetBg = unsafeWindow.getComputedStyle(target).backgroundImage.replace(bgReg ,"$1");
1006410043 var src=targetBg,nsrc=src,noActual=true,type="scale";
1006510044 var img={src:src};
1006610045 result = {
@@ -10077,7 +10056,7 @@ Trace Moe | https://trace.moe/?url=#t#`;
1007710056 target=target.parentNode;
1007810057 }else if(prefs.floatBar.listenBg && hasBg(target.parentNode)){
1007910058 target=target.parentNode;
10080- targetBg=unsafeWindow.getComputedStyle(target).backgroundImage.replace(/.*url\(["'](.*)["']\)/i ,"$1");
10059+ targetBg=unsafeWindow.getComputedStyle(target).backgroundImage.replace(bgReg ,"$1");
1008110060 var src=targetBg,nsrc=src,noActual=true,type="scale";
1008210061 var img={src:src};
1008310062 result = {
@@ -10217,6 +10196,27 @@ Trace Moe | https://trace.moe/?url=#t#`;
1021710196
1021810197 if (!result) {
1021910198 result = findPic(target);
10199+ if(!(result.imgAS.w==result.imgCS.w && result.imgAS.h==result.imgCS.h)){//如果不是两者完全相等,那么被缩放了.
10200+ if(prefs.floatBar.sizeLimitOr){
10201+ if(result.imgCS.h <= prefs.floatBar.minSizeLimit.h && result.imgCS.w <= prefs.floatBar.minSizeLimit.w){//最小限定判断.
10202+ return;
10203+ }
10204+ }else{
10205+ if(result.imgCS.h <= prefs.floatBar.minSizeLimit.h || result.imgCS.w <= prefs.floatBar.minSizeLimit.w){//最小限定判断.
10206+ return;
10207+ }
10208+ }
10209+ }else{
10210+ if(prefs.floatBar.sizeLimitOr){
10211+ if(result.imgCS.w <= prefs.floatBar.forceShow.size.w && result.imgCS.h <= prefs.floatBar.forceShow.size.h){
10212+ return;
10213+ }
10214+ }else{
10215+ if(result.imgCS.w <= prefs.floatBar.forceShow.size.w || result.imgCS.h <= prefs.floatBar.forceShow.size.h){
10216+ return;
10217+ }
10218+ }
10219+ }
1022010220 }
1022110221
1022210222 if(result){
@@ -10265,8 +10265,8 @@ Trace Moe | https://trace.moe/?url=#t#`;
1026510265 function openGallery(){
1026610266 if(!gallery){
1026710267 gallery=new GalleryC();
10268+ gallery.data=[];
1026810269 }
10269- gallery.data=[];
1027010270 var allData=gallery.getAllValidImgs();
1027110271 if(allData.length<1)return true;
1027210272 gallery.data=allData;
0 commit comments