国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

谷歌插件Image downloader開發(fā)之popup

supernavy / 2693人閱讀

摘要:的交互邏輯是這樣的用戶點(diǎn)擊的圖標(biāo),會(huì)向頁(yè)面見上一篇文章谷歌插件開發(fā)之發(fā)送收集圖片事件,頁(yè)面收集完圖片后,將對(duì)應(yīng)的圖片地址數(shù)組發(fā)送給頁(yè)處理。頁(yè)就是點(diǎn)擊谷歌插件圖標(biāo)所彈出來(lái)的頁(yè)面。

Image downloader的交互邏輯是這樣的:用戶點(diǎn)擊Image downloader的圖標(biāo),會(huì)向頁(yè)面(content script,見上一篇文章:谷歌插件Image downloader開發(fā)之 content script)發(fā)送收集圖片事件,頁(yè)面收集完圖片后,將對(duì)應(yīng)的圖片地址數(shù)組發(fā)送給popup頁(yè)處理。popup頁(yè)就是點(diǎn)擊谷歌插件圖標(biāo)所彈出來(lái)的頁(yè)面。Image downloader的popup頁(yè)是長(zhǎng)成這樣的:

popup頁(yè)包含的功能

popup頁(yè)采用了vue1.0來(lái)做數(shù)據(jù)綁定,主要包含了以下功能:

1、顯示原始圖片大小
2、根據(jù)圖片大小篩選圖片
3、設(shè)置是否顯示img標(biāo)簽的圖片、是否顯示背景圖片,是否顯示自定義屬性的圖片
4、根據(jù)自定義屬性規(guī)則,收集所配置的自定義屬性的值
5、下載圖片

popup與content script的交互

圖片容器:

imgs: { // 圖片容器
    attrImg: [], // 屬性圖
    bgImg: [], // 背景圖
    img: [], // img標(biāo)簽圖
},
/**
 * 向tab發(fā)送收集圖片信息,接收tab返回的圖片url列表
 * @param action {string} 值為"all"或"attr",如果為all,則收集所有圖片,為attr則只收集屬性圖
 * @param attr {string} 用;分隔開的屬性規(guī)則
 */
sendMessage(action, attr) {
    chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => {
        chrome.tabs.sendMessage(tabs[0].id, { action, attr }, (response) => {
            if (action === "all") {
                const attrImg = response.attrImg
                const bgImg = response.bgImg
                const img = response.img
                    // 重置容器
                this.resetImgContainer("attrImg")
                this.resetImgContainer("bgImg")
                this.resetImgContainer("img")
                    // 獲取圖片的寬高
                this.mapImg(this.imgs.attrImg, attrImg)
                this.mapImg(this.imgs.bgImg, bgImg)
                this.mapImg(this.imgs.img, img)
            } else {
                this.resetImgContainer("attrImg")
                this.mapImg(this.imgs.attrImg, response.attrImg)
            }
        });
    });
},

popup頁(yè)用了chrome的tabs的api,query查詢當(dāng)前頁(yè)簽,并用sendMessage向頁(yè)簽發(fā)送action和配置的屬性值,如果action為"all"則是收集所有圖片,如果為"attr",則只收集所配置的屬性圖片,resetImgContainer方法只是簡(jiǎn)單地將容器置空,response是content script所返回的結(jié)果,mapImg方法用來(lái)獲取圖片的長(zhǎng)和寬,下文會(huì)講到。

而在content script中,則用onMessage來(lái)接收popup的信息,并將收集到的圖片數(shù)組返回給popup

// 接收popup的指令,如果action為all,則獲取所有圖片url,如果為attr,則獲取屬性圖片
chrome.runtime.onMessage.addListener(({ action, attr }, sender, sendResponse) => {
    if (attr) {
        configAttr = []
        configAttr.push(...initAttr)
        configAttr.push(...attr.split(","))
    } else {
        configAttr = []
        configAttr.push(...initAttr)
    }
    if (action === "all") {
        sendResponse({
            attrImg: [...new Set(getConfigAttrUrl())],
            bgImg: [...new Set(getBackgroundImage())],
            img: [...new Set(getImgUrl())]
        })
    }
    if (action === "attr") {
        sendResponse({
            attrImg: [...new Set(getConfigAttrUrl())],
        })
    }
});

上篇文章發(fā)在div.io上時(shí),@幾米 提到了圖片去重的問(wèn)題,所有在返回圖片是,用es6的Set方法去重,這個(gè)只處理同類型圖片的去重,不處理如背景圖片和圖片標(biāo)簽之間的重復(fù)圖片。

獲取屬性圖片
/**
 * 獲取屬性圖片
 */
getAttrImg() {
    clearTimeout(this.progress)
    this.progress = setTimeout(() => {
        this.sendMessage("attr", this.attr)
    }, 500)
},

配置的屬性值發(fā)生變化時(shí),向頁(yè)面發(fā)送獲取屬性圖片事件

顯示圖片原始大小
/**
 * 遍歷圖片,設(shè)置圖片的寬高屬性
 * @param container {array} 容器
 * @param imgs {array} 圖片url列表
 */
mapImg(container, imgs) {
    imgs.forEach((src) => {
        this.imgNatureSize(container, src)
    })
},
/**
 * 獲取圖片原始寬高,并將圖片push進(jìn)容器
 * @param container {array} 容器
 * @param src {string} 圖片url
 */
imgNatureSize(container, src) {
    const size = {
        width: "",
        height: "",
    }
    let image = new Image()
    image.src = src
    image.onload = function() {
        container.push({
            src,
            width: image.width,
            height: image.height,
        })
    }
},

遍歷拿到的圖片,獲取圖片的寬和高,并將寬高屬性保存起來(lái)

下載圖片
/**
 * 下載圖片
 */
downLoad(url) {
    chrome.downloads.download({ url }, () => {
        console.log("下載成功")
    })
}

調(diào)用谷歌插件的download方法來(lái)進(jìn)行圖片下載,本來(lái)想搞個(gè)批量下載的,但是沒(méi)有發(fā)現(xiàn)谷歌插件有提供批量下載的API,如果遍歷所選中的圖片列表,不斷調(diào)用download方法,會(huì)一下子彈出很多保存窗口,沒(méi)有什么意義,就作罷了。

最后,所有文章都會(huì)同步發(fā)送到微信公眾號(hào)上,歡迎關(guān)注,歡迎提意見:

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/91334.html

相關(guān)文章

  • 谷歌插件Image downloader開發(fā) content script

    摘要:地址功能有下面幾個(gè)功能收集所有的標(biāo)簽的圖片鏈接收集所有的背景圖片鏈接可以根據(jù)定義的規(guī)則,收集標(biāo)簽屬性中的鏈接支持圖片大小篩選顯示圖片的原始大小預(yù)覽插件用到谷歌插件中的和。 自己運(yùn)營(yíng)了一個(gè)公眾號(hào),在發(fā)文章的時(shí)候,需要在網(wǎng)上找一些圖,而有些網(wǎng)站的圖片可能隱藏在屬性或者背景圖中,要下載的時(shí)候經(jīng)常審查元素,查看源碼,不太方便,最近在看一些谷歌插件的api,便順手做了一個(gè)插件Image down...

    guyan0319 評(píng)論0 收藏0
  • 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的chrome插件

    摘要:小結(jié)本文只是簡(jiǎn)單分享了如何開發(fā)一個(gè)簡(jiǎn)單的谷歌瀏覽器插件,以及一些注意事項(xiàng),并且提到了如何授權(quán)和使用谷歌插件,重點(diǎn)介紹了插件開發(fā)必備的入口文件和插件中幾個(gè)重要環(huán)境以及環(huán)境之間的通信。 我們?cè)谏暇W(wǎng)的時(shí)候,都會(huì)用到瀏覽器,但是瀏覽器并非擁有我們想要的所有功能,我們可以根據(jù)自己的需要,實(shí)現(xiàn)自己的插件來(lái)滿足需求。比如網(wǎng)頁(yè)中經(jīng)常會(huì)有大量的廣告,如果你希望擁有一個(gè)純凈的網(wǎng)頁(yè),可以實(shí)現(xiàn)一個(gè)插件來(lái)刪除網(wǎng)...

    rubyshen 評(píng)論0 收藏0
  • 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的chrome插件

    摘要:小結(jié)本文只是簡(jiǎn)單分享了如何開發(fā)一個(gè)簡(jiǎn)單的谷歌瀏覽器插件,以及一些注意事項(xiàng),并且提到了如何授權(quán)和使用谷歌插件,重點(diǎn)介紹了插件開發(fā)必備的入口文件和插件中幾個(gè)重要環(huán)境以及環(huán)境之間的通信。 我們?cè)谏暇W(wǎng)的時(shí)候,都會(huì)用到瀏覽器,但是瀏覽器并非擁有我們想要的所有功能,我們可以根據(jù)自己的需要,實(shí)現(xiàn)自己的插件來(lái)滿足需求。比如網(wǎng)頁(yè)中經(jīng)常會(huì)有大量的廣告,如果你希望擁有一個(gè)純凈的網(wǎng)頁(yè),可以實(shí)現(xiàn)一個(gè)插件來(lái)刪除網(wǎng)...

    lieeps 評(píng)論0 收藏0
  • 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的chrome插件

    摘要:小結(jié)本文只是簡(jiǎn)單分享了如何開發(fā)一個(gè)簡(jiǎn)單的谷歌瀏覽器插件,以及一些注意事項(xiàng),并且提到了如何授權(quán)和使用谷歌插件,重點(diǎn)介紹了插件開發(fā)必備的入口文件和插件中幾個(gè)重要環(huán)境以及環(huán)境之間的通信。 我們?cè)谏暇W(wǎng)的時(shí)候,都會(huì)用到瀏覽器,但是瀏覽器并非擁有我們想要的所有功能,我們可以根據(jù)自己的需要,實(shí)現(xiàn)自己的插件來(lái)滿足需求。比如網(wǎng)頁(yè)中經(jīng)常會(huì)有大量的廣告,如果你希望擁有一個(gè)純凈的網(wǎng)頁(yè),可以實(shí)現(xiàn)一個(gè)插件來(lái)刪除網(wǎng)...

    fjcgreat 評(píng)論0 收藏0
  • 【chrome 插件一】開發(fā)一個(gè)簡(jiǎn)單chrome瀏覽器插件

    摘要:之所以越來(lái)越好用,很大一部分原因歸功于功能豐富的插件對(duì)于忠實(shí)用戶來(lái)說(shuō),了解和開發(fā)一款適合自己的插件,確實(shí)是一件很的事情。 chrome 之所以越來(lái)越好用,很大一部分原因歸功于功能豐富的插件;對(duì)于chrome忠實(shí)用戶來(lái)說(shuō),了解和開發(fā)一款適合自己的chrome插件,確實(shí)是一件很cool的事情。 了解chrome 插件 chrome 插件個(gè)人理解:就是一個(gè)html + js +css + i...

    MiracleWong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<