成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

一個(gè)簡(jiǎn)單的chrome拓展程序開(kāi)發(fā)

vslam / 494人閱讀

摘要:相當(dāng)于發(fā)一個(gè)命令。這個(gè)函數(shù)能獲取到當(dāng)前標(biāo)簽的信息對(duì)象并傳遞給回調(diào)函數(shù)。向標(biāo)簽頁(yè)中的發(fā)送消息。接收到消息,執(zhí)行操作。會(huì)彈出一個(gè)控制臺(tái)。這樣我們就完成了一個(gè)簡(jiǎn)單的插件。

最近突然覺(jué)得有些常用的功能可以寫(xiě)成瀏覽器插件,就不用把代碼放到console控制臺(tái)運(yùn)行了。只要點(diǎn)擊插件圖標(biāo)就可以自動(dòng)運(yùn)行。會(huì)方便很多。就去查了下chrome插件開(kāi)發(fā)教程。本質(zhì)上講,chrome插件就是以一些特殊的方式運(yùn)行一些特定的html,css,JavaScript代碼,前端同學(xué)們學(xué)起來(lái)還是很容易的。

比較好的中文的參考資料:
1.360翻譯的文檔:http://open.chrome.#/ext...
2.Chrome擴(kuò)展及應(yīng)用開(kāi)發(fā):http://www.ituring.com.cn/min...

我們做一個(gè)簡(jiǎn)單的插件:實(shí)現(xiàn)點(diǎn)擊插件圖標(biāo)可以給頁(yè)面上所有的a標(biāo)簽加上一個(gè)target="_blank",讓點(diǎn)所有鏈接都在新頁(yè)面打開(kāi)。
我們開(kāi)發(fā)的應(yīng)用這樣使用:

1.建立一個(gè)文件夾。a chrome plugin。
2.新建配置文件 manifest.json。前端同學(xué)們對(duì)于這樣的配置文件一定不陌生。
里同包含了版本號(hào),插件名稱,默認(rèn)頁(yè)面,content_scripts,permissions等基本信息。
這個(gè)文件能將我們插件中的的js,css,JavaScript文件組織起來(lái)。
具體每個(gè)參數(shù)的含義見(jiàn)文檔:http://open.chrome.#/ext...
代碼:

{
    "manifest_version": 2,
    "name": "A",
    "version": "1.0",
    "description": "新標(biāo)簽打開(kāi)鏈接",
    "browser_action": {
        "default_popup": "popup.html"
    },
    "content_scripts":[
        {
            "matches": ["http://*/*","https://*/*"],
            "js": ["back.js"],
            "run_at":"document_end"
        }
    ],
    "permissions": [
        "tabs"
    ]
}

3.建立文件。popup.html。
對(duì)應(yīng)配置文件中的 "default_popup": "popup.html"。

點(diǎn)圖標(biāo)的時(shí)候我們會(huì)加載運(yùn)行這個(gè)html,運(yùn)行這個(gè)html引入的js。
這是一個(gè)普通的html頁(yè)面。里面可以寫(xiě)css。也可以加載JavaScript文件。也可以給里面的節(jié)點(diǎn)添加事件什么的。
不過(guò)這個(gè)文件以及加載的js無(wú)法訪問(wèn)當(dāng)前我們打開(kāi)的標(biāo)簽頁(yè)中的dom節(jié)點(diǎn)。
代碼:



    


    這是popup.html里面。


這里只用來(lái)加載一個(gè)js。

4.popup.js?!opup.html引入的js。這里我們用戶它的做的事是向content_scripts中發(fā)送一個(gè)消息。相當(dāng)于發(fā)一個(gè)命令。告訴content script,去辦事吧。content_scripts的內(nèi)容在后面,看完再回過(guò)來(lái)看一次這里。

    chrome.tabs.getSelected(null, function(tab) {
        chrome.tabs.sendRequest(tab.id, {greeting: "hello"}, function(response) {
            // console.log(response.farewell);
        });
    });

chrome.tabs.getSelected()這個(gè)函數(shù)能獲取到當(dāng)前標(biāo)簽的信息對(duì)象并傳遞給回調(diào)函數(shù)。 
獲取到tabId就是tab.id??梢宰约篶onsole.log(tab)出來(lái)看一下。文章后面有對(duì)應(yīng)調(diào)試控制臺(tái)的打開(kāi)方式。tab相關(guān)的接口可以查看:http://open.chrome.#/ext... 很多接口都要用到這個(gè)參數(shù):tabId ( integer ),其實(shí)就是用這個(gè)接口拿到tabId。

chrome.tabs.sendRequest()這個(gè)函數(shù)是向某個(gè)標(biāo)簽的content_script中發(fā)送一個(gè)消息。也需要tabId這個(gè)參數(shù)。chrome插件之間的通信接口可查看 :http://open.chrome.#/ext...

5.back.js。也是我們這個(gè)插件中的content script。
這個(gè)文件是我們插入到當(dāng)前標(biāo)簽頁(yè)中運(yùn)行的代碼。它可以訪問(wèn)標(biāo)簽頁(yè)面中的dom節(jié)點(diǎn)。
我們這里用它來(lái)是監(jiān)聽(tīng)消息,消息來(lái)了就運(yùn)行設(shè)置標(biāo)簽的函數(shù)。操作標(biāo)簽頁(yè)中的dom節(jié)點(diǎn)。

對(duì)應(yīng)配置文件中content_scripts下的back.js。
這個(gè)參數(shù)中的內(nèi)容會(huì)被加載到當(dāng)前打開(kāi)的網(wǎng)頁(yè)中,可以訪問(wèn)當(dāng)前標(biāo)簽頁(yè)的節(jié)點(diǎn)。
所以,我們對(duì)頁(yè)面的操作往往會(huì)寫(xiě)在這個(gè)腳本里。有需要的話甚至可以加載個(gè)jQuery到里面。
但是這里的JavaScript與網(wǎng)頁(yè)上原本的JavaScript不是一個(gè)環(huán)境下運(yùn)行。具體區(qū)別可以自己去看開(kāi)發(fā)文檔。http://open.chrome.#/ext...
代碼:

function setA(){
    var aDoms = document.getElementsByTagName("a");
    var len = aDoms.length;
    for (var i = 0; i < len; i++) {
        aDoms[i].setAttribute("target","_blank")
    }
}
chrome.extension.onRequest.addListener(
    function(request, sender, sendResponse) {
        if (request.greeting == "hello"){
            setA();
            // sendResponse({farewell: "goodbye"});
        }else{
              // sendResponse({});
          }
      }
      );

可能比較要注意的一點(diǎn)是popup.html與content_script之間的通信。
popup.html向標(biāo)簽頁(yè)中的content_script發(fā)送消息。
content_script接收到消息,執(zhí)行操作。

6.調(diào)試方式:
popup.html加載的js調(diào)試。
右鍵點(diǎn)擊插件圖標(biāo),選擇審查彈出內(nèi)容。(或者在彈出框里右鍵點(diǎn)擊檢查。)會(huì)彈出一個(gè)控制臺(tái)。
點(diǎn)source可以看到我們的html和js資源。

content_script的調(diào)試:
打開(kāi)頁(yè)面控制臺(tái),點(diǎn)sources,然后點(diǎn)Contents scripts,可以看到瀏覽器插件會(huì)作用到頁(yè)面的代碼。

注意每次修改了代碼要重新加載插件。

這樣我們就完成了一個(gè)簡(jiǎn)單的chrome插件。

github:https://github.com/liusaint/J...
本文同步發(fā)表在我的csdn博客上:http://blog.csdn.net/liusaint...

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/80953.html

相關(guān)文章

  • chrome擴(kuò)展開(kāi)發(fā)

    摘要:這是本人寫(xiě)的第一個(gè)擴(kuò)展,這個(gè)擴(kuò)展的普遍適用性不強(qiáng),但是確實(shí)很方便,具體的開(kāi)發(fā)流程寫(xiě)在這里,感興趣的看官可以試著自己動(dòng)手寫(xiě)一寫(xiě)這個(gè)擴(kuò)展的作用是,它的適用場(chǎng)景是更換百度搜索頁(yè)的關(guān)鍵詞,并且跳轉(zhuǎn),如果你理解了這個(gè)意思,那你一定會(huì)想這能有什么用,是 這是本人寫(xiě)的第一個(gè)chrome擴(kuò)展,這個(gè)擴(kuò)展的普遍適用性不強(qiáng),但是確實(shí)很方便,具體的開(kāi)發(fā)流程寫(xiě)在這里,感興趣的看官可以試著自己動(dòng)手寫(xiě)一寫(xiě) 這個(gè)擴(kuò)展...

    yedf 評(píng)論0 收藏0
  • 《JavaScript高級(jí)程序設(shè)計(jì)》(第3版)讀書(shū)筆記 第11章 DOM拓展

    摘要:對(duì)的兩個(gè)主要拓展是選擇和。以下插入標(biāo)記的拓展已經(jīng)納入了規(guī)范。在寫(xiě)模式下,會(huì)根據(jù)指定的字符串創(chuàng)建新的子樹(shù),然后用這個(gè)子樹(shù)完全替換調(diào)用元素。在刪除帶有時(shí)間處理程序或引用了其他對(duì)象子樹(shù)時(shí),就有可能導(dǎo)致內(nèi)存占用問(wèn)題。 盡管DOM作為API已經(jīng)非常完善了,但為了實(shí)現(xiàn)更多功能,仍然會(huì)有一些標(biāo)準(zhǔn)或?qū)S械耐卣埂?008年之前,瀏覽器中幾乎所有的拓展都是專有的,此后W3C著手將一些已經(jīng)成為事實(shí)標(biāo)準(zhǔn)的專...

    luck 評(píng)論0 收藏0
  • Chrome 擴(kuò)展開(kāi)發(fā)——編寫(xiě)一個(gè)自己瀏覽器插件

    摘要:配置文件每一個(gè)擴(kuò)展都有一個(gè)格式的文件,叫。此消息發(fā)送后會(huì)觸發(fā)擴(kuò)展內(nèi)每個(gè)頁(yè)面的事件。和持續(xù)長(zhǎng)時(shí)間的保持會(huì)話需要在和擴(kuò)展建立一個(gè)長(zhǎng)時(shí)間存在的通道。內(nèi)容腳本發(fā)送消息到擴(kuò)展程序建立通道,并給通道命名利用通道發(fā)送一條消息。 這次的練習(xí)是做一個(gè)Chrome的擴(kuò)展,分享一下入門開(kāi)發(fā)過(guò)程。因?yàn)樵谙鬟f那塊糾結(jié)了特別久,所以我會(huì)重點(diǎn)總結(jié)消息傳遞那塊。 這次做這個(gè)插件的功能很簡(jiǎn)單,就是點(diǎn)擊按鈕后可以對(duì)當(dāng)...

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

    摘要:小結(jié)本文只是簡(jiǎn)單分享了如何開(kāi)發(fā)一個(gè)簡(jiǎn)單的谷歌瀏覽器插件,以及一些注意事項(xiàng),并且提到了如何授權(quán)和使用谷歌插件,重點(diǎn)介紹了插件開(kāi)發(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

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

0條評(píng)論

閱讀需要支付1元查看
<