2017-02-08 51 views
0

我想做一个chrome扩展,检查一个标签是图像还是网站。让我解释:我想注入(或执行)只有当标签是像一些代码,例如,如果标签的网址是:如何判断一个标签是网站还是图片?

https://upload.wikimedia.org/wikipedia/commons/0/0e/MorningIndianRiver%2C_KennedySpaceCenter.jpg

所以,如果我做一个后台脚本来检查,如果网址是图像(*.jpg例如),那么它将执行代码,一切看起来像一个形象的,但它没有,像这样的例子:

https://commons.wikimedia.org/wiki/File:MorningIndianRiver,_KennedySpaceCenter.jpg

它看起来像一个网址为图像,但事实并非如此。而问题是,有时标签实际上是一个图像,即使没有扩展名,扩展名,如:

http://placehold.it/500x500

这是一个形象,但背景脚本不知道。

那么如何判断一个标签是图片还是网站? API中有处理这个问题的东西吗?

+2

使用/注入内容脚本来检查唯一的body元素是否为图像,其src等于标签URL。 – wOxxOm

+0

@wOxxOm可能是比我的更好的解决方案,但是idk在不同版本的chrome中可能有多可靠 – Hatchet

+0

@Hatchet同意!这周末改变了!所以这不是理所当然的事! –

回答

1

向请求的资源发出HEAD请求,并阅读Content-Type响应头。不过,您可能必须提出跨域请求,但如果您正在开发Chrome扩展程序looks like there's a permission for that

您可能需要寻找匹配image/*的MIME类型。

+0

但该请求将是异步的。我将如何适应这一点! –

+0

@ibrahimmahrir这就是xhr的美,它是异步的。看看文档:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest,添加一个readystatechange处理程序,或者同步打开它,有很多不同的方式来使用它。 – Hatchet

+0

我知道XHRs的美妙之处在于它们的异步性。但在这种情况下,我想重定向到本地页面,如果该选项卡是一个图像(函数应立即返回不等待XHR完成)。我可以通过创建另一个本地页面来完成XHR并查看它是否为图像,然后重定向到本地页面或原始网站,但如果它是网站,它将整天循环(网站>后台脚本>执行XHR>网站> backgrou的本地页面).. –

相关问题