溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

chrome擴(kuò)展與標(biāo)簽tab的內(nèi)容交互

發(fā)布時(shí)間:2020-07-20 09:07:49 來源:網(wǎng)絡(luò) 閱讀:2517 作者:crackernet 欄目:開發(fā)技術(shù)

chrome插件提供了查找tab的api:

  chrome.tabs.get(integer tabId, function callback)


但是出于安全的考慮,tab的屬性中沒有document,因此無法在擴(kuò)展中直接獲取某個(gè)頁簽頁面中的頁面元素,但是tab有這樣一個(gè)方法:

  chrome.tabs.sendRequest(integer tabId, any request, function responseCallback)

他可以在擴(kuò)展中對某一個(gè)tab進(jìn)行請求,發(fā)送請求信息;在對應(yīng)的tab頁面中通過

  chrome.extension.onRequest.addListener(function(any request, MessageSender sender, function sendResponse) {...});對擴(kuò)展中的請求進(jìn)行監(jiān)聽,根據(jù)監(jiān)聽到的信息,決定要做的事情


簡單一點(diǎn)的,簡明實(shí)例:
一、在擴(kuò)展中 添加 發(fā)送事件請求 的代碼

  chrome.tabs.sendRequest(tab_id, {      hello: "ok"    }, function(response) {        // tab做出響應(yīng),發(fā)來的response })



二、在 tab中添加 事件監(jiān)聽的代碼

在manifest.json中添加

  "content_scripts": [    {      "matches": ["*://*/*"],      "js": ["jquery.min.js","test.js"]    }  ],  "permissions": ["*://*/*","tabs"]


其目的是在每個(gè)標(biāo)簽頁面加載的時(shí)候同時(shí)載入這兩個(gè)js,獲取tabs的權(quán)限

在test.js 中放入監(jiān)聽 擴(kuò)展 請求事件的代碼

  chrome.extension.onRequest.addListener(  function(request, sender, sendResponse) {    if (request.hello == "ok"){  // 在得到request請求是ok的時(shí)候 做下面的操作      sendResponse({        data: $("#hello") // 獲取id是hello的元素發(fā)過去      });    }  }  );


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI