2017-02-08 90 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的本地頁面).. –

相關問題