From within a Chrome extension, is there any way I can execute a script into another open extension? I just want to click a specific button whenever a different extension opens.
I tried using chrome scripting APIs:
chrome.scripting.executeScript({
target: { tabId: tab.id }, // tab id relative the other open extension
function: injectIntoAnotherExtension
});
function injectIntoAnotherExtension() {
document.getElementById('some-button').click();
}
At first I got the error:
Error: Cannot access a chrome-extension:// URL of different extension
After enabling the Extensions on chrome:// URLs flag (chrome://flags/#extensions-on-chrome-urls), I now get:
Error: Cannot access contents of url "chrome-extension://foo/bar/xyz.html". Extension manifest must request permission to access this host.
Here are my manifest permissions, which should allow all urls:
"host_permissions": [
"<all-urls>"
]
I also tried with *://*/* or chrome-extensions://*/* but with no success.
Related questions: this and this.
Any way around it? Or is there any other way to automatically click a button in another running extension?
Thanks!
Thanks to @wOxxOm, I got it working with:
chrome.debugger.attach({
tabId: tab.id
}, '1.0', function() {
chrome.debugger.sendCommand({
tabId: tab.id
}, "Runtime.evaluate", { expression:
"document.getElementById('some-button').click();"
}, function(response) {
console.log(response);
});
});