我想编写一个Chrome扩展程序,在其中输入页面URL,它列出了该页面上显示的所有图像文件名以及这些图像的文件大小,例如“页面包含图像:1.jpg(65KB),2.png(135KB)
)”。如何才能做到这一点?我也想避免使它成为devtools扩展。
我尝试使用webRequest
API,但看不到任何访问请求正文的方法。图片大小可能会在响应标头中发送,但不能保证。我已经尝试过使用AJAX来获取图像数据,但是您获得的图像数据是未压缩的版本,这不能准确反映实际文件的大小。
您可以致电document.images
获得图像document
,使用fetch()
,Response.blob()
以回报Blob
图像的响应,检查.size
的Blob
,以获取图像的名称URL()
构造
let getImages = () => {
let images = Array.from(document.images);
return Promise.all(images.map(img => fetch(img.src)
.then(response => response.blob())))
.then(blobs => {
return blobs.map((img, index) => {
let name = new URL(images[index].src).pathname.split("/").pop();
name = !/\./.test(name)
? name + "." + img.type.replace(/.+\/|;.+/g, "")
: name;
return {
name: name,
size: img.size
}
});
})
}
getImages()
.then(images => console.log(JSON.stringify(images)))
.catch(e => console.log(e))
<img src="https://placehold.it/10x10">
<img src="https://placehold.it/20x20">
问题内容: 我有一个HTML页面,其中有一些用Angular配置的DOM。现在,我正在构建一个chrome扩展程序来修改文本框中的值。由于文本框是使用Angular设计的,因此无法使用。阅读一些资源后,我知道需要对元素的范围进行更改。我尝试在扩展程序中执行此操作。 这似乎无法正常工作。当我更深入地研究问题时,我发现窗口范围内的角度没有得到正确的范围。 我还尝试从扩展名中注入angular.js并直
我正在创建一个Zend Framework应用程序,用户可以在其中上载配置文件图像。可接受的文件类型为png、jpg和gif。图像最终被存储为用户id和文件扩展名。 我想知道的是,假设用户上传png或gif文件,将文件扩展名更改为jpg是否安全? 这样,所有的配置文件图像都将具有相同的文件扩展名,我只是不确定这样更改文件类型是否是一个好主意。
问题内容: 我正在创建一个扩展程序,它将从网站上下载mp3文件。我正在尝试通过创建带有指向mp3文件的链接的新标签来实现此目的,但是chrome会继续在播放器中打开它而不是下载它。有什么方法可以创建一个弹出窗口,要求用户“另存为”文件? 问题答案: 快进了3年,现在GoogleChrome提供了API(自Chrome31起)。 在清单中声明许可后,可以通过以下调用启动下载: 如果要在脚本中生成文件
问题内容: 我有以下代码,我认为可以在指定的路径中调整图像的大小,但是当我运行它时,没有任何效果,但是python不会引发任何错误,所以我不知道该怎么做。请指教。谢谢。 问题答案: 您的错误属于文件的完整路径。代替 项目 必须是 path + item
问题内容: 我正在尝试小写所有扩展名,无论它是什么。到目前为止,根据我所见,您必须指定要转换为小写形式的文件扩展名。不过,我只是想为小写的一切后 首次 最后一个点的名称。 我该怎么做? 问题答案: 解 您可以在一行中完成任务: 注意:这将破坏包含换行符的文件名。但是现在就忍受我。 使用例 说明 您会在当前目录()中找到名称为()的所有文件,并为每个文件运行命令: 该命令的意思是:尝试将文件扩展名转
问题内容: 我有一个Chrome扩展程序。我需要从当前页面的HTML源进行分析。我在这里找到了各种带有背景页面和内容脚本的解决方案,但没有一个对我有帮助。这是我到目前为止所拥有的: manifest.json: background.html: content.js: 警报始终警报未定义。即使我在content.js文件中将回调函数更改为: 结果还是一样。我究竟做错了什么?也许我走错路了。我真正需