why inject it inside the browser?
it can be message and event based, allowing multiple extensions. nip07 had the same issue of extensions fighting.
you emit an event or broadcast a message using the BroadcastChannel, and extensions respond by giving you their names, logo, and api object. so you can show the user options from the extensions they have.