Advertisement
nanotroll

Untitled

Aug 21st, 2024
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // manifest
  2. {
  3.   "manifest_version": 3,
  4.   "name": "Site-specific side panel",
  5.   "version": "1.0",
  6.   "description": "Shows how to display the side panel only on google.com using the Side Panel API.",
  7.   "background": {
  8.     "service_worker": "service-worker.js"
  9.   },
  10.   "action": {
  11.     "default_title": "Click to open panel"
  12.   },
  13.   "permissions": ["sidePanel", "tabs", "scripting"],
  14.   "host_permissions": ["<all_urls>"]
  15. }
  16.  
  17. // service-worker.js
  18. const ORIGIN1 = 'site1';
  19. const ORIGIN2 = 'site2';
  20.  
  21. chrome.sidePanel
  22.   .setPanelBehavior({ openPanelOnActionClick: true })
  23.   .catch((error) => console.error(error));
  24.  
  25. chrome.tabs.onUpdated.addListener(async (tabId, info, tab) => {
  26.   if (!tab.url) return;
  27.   const url = new URL(tab.url);
  28.   if (url.origin.includes(OTVET_ORIGIN) || url.origin.includes(NMO_ORIGIN)) {
  29.     await chrome.sidePanel.setOptions({
  30.       tabId,
  31.       path: 'sidepanel.html',
  32.       enabled: true
  33.     });
  34.   } else {
  35.     await chrome.sidePanel.setOptions({
  36.       tabId,
  37.       enabled: false
  38.     });
  39.   }
  40. });
  41.  
  42. // sidepanel.js
  43. const getTitle1 = () => {
  44.   let test = document.getElementsByClassName('myClass1')[0];
  45.   console.log(test);
  46.   return test.innerHTML;
  47. }
  48.  
  49. const getTitle2 = () => {
  50.   let test = document.getElementsByClassName('myClass2')[0];
  51.   console.log(test);
  52.   return test.innerHTML;
  53. }
  54.  
  55. chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => {
  56.   chrome.scripting.executeScript({
  57.     target: { tabId: tabs[0].id },
  58.     func: getTitle1
  59.   }, (result) => {
  60.     document.getElementById("tab1_title").innerText = result[0].result;
  61.   });
  62.  
  63.   chrome.scripting.executeScript({
  64.     target: { tabId: tabs[1].id },
  65.     func: getTitle2
  66.   }, (result) => {
  67.     document.getElementById("tab2_title").innerText = result[0].result;
  68.   });
  69. });
  70.  
  71. // sidepanel.html
  72. <!doctype html>
  73. <html>
  74.   <head>
  75.     <title>Test side panel extension</title>
  76.   </head>
  77.   <body>
  78.     <h1 id="tab1_title"></h1>
  79.     <h1 id="tab2_title"></h1>
  80.     <script src="./sidepanel.js"></script>
  81.   </body>
  82. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement