Skip to content

devidw/tabgod

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

execute any javascript on any chromium tabs

  • adds options page with tabgod() function
async function tabgod(
  tabFilterFunc: (tab: chrome.tabs.Tab, ...args: unknown[]) => boolean,
  exeFunc: (...args: unknown[]) => unknown,
  options?: {
    tabFilterArgs?: unknown[];
    exeArgs?: unknown[];
    evalAdd?: string;
  },
): Promise<{ tabId: number; result: unknown }[]> {
  //
}

examples

having chatgpt and pi talk to each other

demo.mp4

searching same query on multiple search engines

usage

  1. open extensions options page
  2. open devtools console
  3. use provided tabgod() function
    1. choose execution targets by writing a filter function that will include/excluce tabs based on defined criteria
    2. write any js to execute in world of targeted tabs
tabgod(
  (tab) => tab.url.includes("example.org"),
  () => document.body.style.background = "pink",
);

notes on first release

  • initial idea was to make tabgod function available in all devtools consoles for easy and direct access for developers right from every console
  • the implementation added tabgod to the global window object
  • however this introduced a serious security issue, since this has made the function available to websites also, allowing them to interact with other tabs, destroying the idea of secure tab origins
  • thanks to danielsmc pointing it out
  • this has been immediately addressed by moving the function only to the options page of the extension, and not accepting external connections in the service worker