Code: Select all
browser.runtime.sendMessage()
Code: Select all
browser.tabs.create(
The thing is: how to access browser object?
Code: Select all
browser.runtime.sendMessage()
Code: Select all
browser.tabs.create(
Code: Select all
(function () {
browser.tabs.create({
"url": "http://www.example.com/",
});
})();
Code: Select all
document.getElementsByTagName('browser')[0].messageManager.loadFrameScript('data:application/javascript;charset=UTF-8,' + encodeURIComponent('(' + (function () {
content.wrappedJSObject.browser.tabs.create({url: 'https://github.com/xiaoxiaoflood/firefox-scripts'})
}).toString() + ')();'), false)
Code: Select all
(function () {
var enumerator = Services.ww.getWindowEnumerator();
while (enumerator.hasMoreElements()) {
var win = enumerator.getNext();
if (win.document && win.document.documentURI == "chrome://extensions/content/dummy.xhtml") {
win.document.querySelectorAll("browser").forEach(function (browser) {
if (browser._contentPrincipal.addonPolicy &&
browser._contentPrincipal.addonPolicy.extension.manifest.name == "uBlock Origin") {
var script = "data:text/plain," + encodeURIComponent(`
content.wrappedJSObject.browser.tabs.create({
url: "http://www.gnu.org/licenses/gpl-3.0-standalone.html",
});
var data = {};
data.permissions = content.wrappedJSObject.browser.runtime.getManifest().permissions;
data.browser = content.wrappedJSObject.browser;
sendAsyncMessage("foobar", data);
`);
browser.messageManager.addMessageListener("foobar", function removeMe(message) {
browser.messageManager.removeMessageListener("foobar", removeMe);
console.log(message.data.permissions);
console.log(message.data.browser);
});
browser.messageManager.loadFrameScript(script, false);
}
});
}
}
return "Debugging uBlock Origin";
})();
Code: Select all
(function () {
var enumerator = Services.ww.getWindowEnumerator();
while (enumerator.hasMoreElements()) {
var win = enumerator.getNext();
if (win.document && win.document.documentURI == "chrome://extensions/content/dummy.xhtml") {
win.document.querySelectorAll("browser").forEach(function (browser) {
var uri = Services.io.newURI(browser.contentWindow.location.href);
if (WebExtensionPolicy.getByURI(uri) &&
WebExtensionPolicy.getByURI(uri).extension.manifest.name == "XNote++") {
var script = "data:text/plain," + encodeURIComponent(`
content.wrappedJSObject.browser.tabs.create({
url: "http://www.gnu.org/licenses/gpl-3.0-standalone.html",
});
var data = {};
data.permissions = content.wrappedJSObject.browser.runtime.getManifest().permissions;
data.browser = content.wrappedJSObject.browser;
sendAsyncMessage("foobar", data);
`);
browser.messageManager.addMessageListener("foobar", function removeMe(message) {
browser.messageManager.removeMessageListener("foobar", removeMe);
console.log(message.data.permissions);
console.log(message.data.browser);
});
browser.messageManager.loadFrameScript(script, false);
}
});
}
}
return "Debugging XNote++";
})();