Skip to content

Commit ed44b39

Browse files
committed
Update Picviewer CE+.user.js
1 parent a709329 commit ed44b39

1 file changed

Lines changed: 51 additions & 51 deletions

File tree

Picviewer CE+/Picviewer CE+.user.js

Lines changed: 51 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
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

Comments
 (0)