Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从sfpg(单文件PHP库)中查找所有img src属性_Javascript_Html_Greasemonkey_Image Gallery_Tampermonkey - Fatal编程技术网

Javascript 如何从sfpg(单文件PHP库)中查找所有img src属性

Javascript 如何从sfpg(单文件PHP库)中查找所有img src属性,javascript,html,greasemonkey,image-gallery,tampermonkey,Javascript,Html,Greasemonkey,Image Gallery,Tampermonkey,我试图在Greasemonkey中创建一个用户脚本,在下面的图库中迭代所有IMG,从缩略图下载实际图像 缩略图和图像之间的差异是url查询参数的值;因此,我们必须将cmd=thumb更改为cmd=image。这很容易 因此,首先我尝试获取var中的所有img标记,然后尝试迭代所有标记,并在每次迭代中使用stringreplace将thumb更改为image以获得实际的图像 但是这个方法没有检索任何img!!!在其他每一页中,我都能找到所有IMG,除了这一页 如果有人能告诉我为什么会这样,我会很有

我试图在Greasemonkey中创建一个用户脚本,在下面的图库中迭代所有IMG,从缩略图下载实际图像

缩略图和图像之间的差异是url查询参数的值;因此,我们必须将cmd=thumb更改为cmd=image。这很容易

因此,首先我尝试获取var中的所有img标记,然后尝试迭代所有标记,并在每次迭代中使用stringreplace将thumb更改为image以获得实际的图像

但是这个方法没有检索任何img!!!在其他每一页中,我都能找到所有IMG,除了这一页

如果有人能告诉我为什么会这样,我会很有帮助的

网址:

在下面的代码片段中,首先我尝试查看console中的所有img标记,但它只返回baseURI,而不返回内部img。我还检查了tags.count返回1,而不是3,因为这个页面上有三个图像。除非我能够找到IMG,否则我无法完成下一部分,即更改URL和自动下载。我和其他网站都已经准备好了这些代码

/==UserScript==
//@name未命名脚本629250
//@version 1
//@匹配http://sye.dk/sfpg/demo/index.php?sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKipkN2UwYWI2MTRkZGU2MTBiYjliMzEzM2M2ZDUzODE3MTY0OWU4ZWI3YjU0MzcwMTU2ODIxN2YxMTA2NWFiOWEw
//@grant none
//==/UserScript==
(功能(){
"严格使用",;
var tags=document.getElementsByTagName('img');

对于(var i=0;i图像是延迟加载的-它们不会在页面加载时立即包含在HTML中。延迟解决方案是在尝试选择
img
s之前添加一个小的
setTimeout

另一个问题是,这里不仅仅有三个
img
s,最好只选择缩略图视图中的一个,使用
.thumbbox img
。请尝试以下操作:

// ==UserScript==
// @name     sveimages
// @version  1
// @match    http://sye.dk/sfpg/demo/index.php?sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKipkN2UwYWI2MTRkZGU2MTBiYjliMzEzM2M2ZDUzODE3MTY0OWU4ZWI3YjU0MzcwMTU2ODIxN2YxMTA2NWFiOWEw
// @grant    none
// ==/UserScript==

setTimeout(() => {
  const fullImageURLs = Array.from(
    document.querySelectorAll('.thumbbox img'),
    img => img.src.replace('cmd=thumb', 'cmd=image')
  );
  console.log(fullImageURLs);
}, 100);
输出:

Array(3)
0:"http://sye.dk/sfpg/demo/index.php?cmd=image&sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKkNsZW1lbnRpbmVzLmpwZyowZmYzZmJlOTBlZjI3MjRhMzIwYzEzY2UxNzgzMGFlYTg3ZjM2OTg0NjZhOTM3NzllNWNhNTY1Y2FkNjczNmYy"
1:"http://sye.dk/sfpg/demo/index.php?cmd=image&sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKkZ1bm55IEZydWl0LmpwZypjMmY5ZGI2ZmEzZDA1Y2UxNGE1NmQ1OGVmODA1YjhmNTU1ODU2MmZmNzZhM2RmNDUxMmFmNGRiODE5YTg1YTc1"
2:"http://sye.dk/sfpg/demo/index.php?cmd=image&sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKk9yYW5nZXMuanBnKmQ2ZDlkMDc1MDYxMWI4OTA5NDk1NGE1NzEzMmE3ZDg5YWYzNDllNjQ4YTgwMzhkODg5YzhjZTViMzZlNjUwNTM"
length:3

图像是延迟加载的-它们不会在页面加载时立即包含在HTML中。延迟解决方案是在尝试选择
img
s之前添加一个小的
setTimeout

另一个问题是,这里不仅仅有三个
img
s,最好只选择缩略图视图中的一个,使用
.thumbbox img
。请尝试以下操作:

// ==UserScript==
// @name     sveimages
// @version  1
// @match    http://sye.dk/sfpg/demo/index.php?sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKipkN2UwYWI2MTRkZGU2MTBiYjliMzEzM2M2ZDUzODE3MTY0OWU4ZWI3YjU0MzcwMTU2ODIxN2YxMTA2NWFiOWEw
// @grant    none
// ==/UserScript==

setTimeout(() => {
  const fullImageURLs = Array.from(
    document.querySelectorAll('.thumbbox img'),
    img => img.src.replace('cmd=thumb', 'cmd=image')
  );
  console.log(fullImageURLs);
}, 100);
输出:

Array(3)
0:"http://sye.dk/sfpg/demo/index.php?cmd=image&sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKkNsZW1lbnRpbmVzLmpwZyowZmYzZmJlOTBlZjI3MjRhMzIwYzEzY2UxNzgzMGFlYTg3ZjM2OTg0NjZhOTM3NzllNWNhNTY1Y2FkNjczNmYy"
1:"http://sye.dk/sfpg/demo/index.php?cmd=image&sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKkZ1bm55IEZydWl0LmpwZypjMmY5ZGI2ZmEzZDA1Y2UxNGE1NmQ1OGVmODA1YjhmNTU1ODU2MmZmNzZhM2RmNDUxMmFmNGRiODE5YTg1YTc1"
2:"http://sye.dk/sfpg/demo/index.php?cmd=image&sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKk9yYW5nZXMuanBnKmQ2ZDlkMDc1MDYxMWI4OTA5NDk1NGE1NzEzMmE3ZDg5YWYzNDllNjQ4YTgwMzhkODg5YzhjZTViMzZlNjUwNTM"
length:3

哇,非常感谢,在我的例子中,我把超时时间改为1000,它工作了,当它是100时,它并没有加载,可能是因为整个系统的住宿速度不同,这就是原因。但谢谢你!!!真的很感谢!!你对拇指框部分的看法也是正确的,我在for循环中用if过滤了它,但没有将整个代码粘贴到这里:)哇,非常感谢,在我的例子中,我把超时时间改为1000,它工作了,当它是100时,它并没有加载,可能是因为整个系统的住宿速度不同,这就是原因。但谢谢你!!!真的很感谢!!你对拇指框部分的看法也是正确的,我在for循环中用if过滤了它,但没有将整个代码粘贴到这里:)