'Chrome Extension Development open extension window from background service

Using: Manifest V3

How do I open my extension same way Metamask does it?

Currently what I have tried is that from my background service I am using chrome.runtime.sendMessage to send message to my content.html and .js of my extension where I have chrome.runtime.onMessage.addListener and listen for the open window message then I tried with chrome.extension.getViews({ type: 'popup' }).forEach(v => v.open()); to display my extension window, but instead it sometimes opens a new empty tab or sometimes I get error Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.

What I want to accomplish is that the service worker which is constantly running in background, can open my extension window same way like when I click on extension icon.

Metamask case example: https://youtu.be/vhUjCLYlnMM?t=633

This:

From [ (Service worker) background.js ] open extension window programmatically, same way as when clicked in the Chrome taskbar on the icon of extension.



Solution 1:[1]

You can open it with a new tab on the url in the css and js parts. <a target="_blank" href="file.url"></a>

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 nisancigokmen