Compare commits

...
3 Commits
Author SHA1 Message Date
MatMoulandGitHub b1f76dadde Merge pull request #193 from manner82/fix/issue-192-context-menus-sendmessage
Fix context menus on dial page for Firefox 152+ (replace deprecated tabs.executeScript)
2026-06-28 15:34:52 +02:00
Robert Manner 7dc29e5a70 Version 0.1.24 2026-06-25 09:25:59 +02:00
Robert Manner 3fd4cd6d3b js: replace deprecated tabs.executeScript with tabs.sendMessage
The dial-page context menus invoked window.dial.* functions via
browser.tabs.executeScript. That API is deprecated since Firefox 149 and
removed in Firefox 152, which broke creating/editing bookmarks and folders
from the dial page (issue #192).

Switch the menu handlers to browser.tabs.sendMessage. New menu command IDs
(200-207) are added to the Commands enum in both background.js and dial.js,
and the existing runtime.onMessage listener in dial.js now dispatches these
commands to the corresponding dial.* functions using the page-side
_selectedItem state.

Fixes #192
2026-06-24 12:42:21 +02:00
3 changed files with 54 additions and 36 deletions
+20 -34
View File
@@ -46,7 +46,15 @@ app.Messages.Commands = {
refreshNode: 9, refreshNode: 9,
capturePage: 10, capturePage: 10,
settingsChanged: 100, settingsChanged: 100,
gridNodesLoaded: 101 gridNodesLoaded: 101,
menuCreateBookmark: 200,
menuCreateFolder: 201,
menuEditSettings: 202,
menuEditProperties: 203,
menuRefreshNode: 204,
menuCaptureHere: 205,
menuCapturePage: 206,
menuDeleteNode: 207
}; };
app.Messages.init = function(){ // Init Messages Listeners app.Messages.init = function(){ // Init Messages Listeners
browser.runtime.onMessage.addListener(function(request, sender, sendResponse){ browser.runtime.onMessage.addListener(function(request, sender, sendResponse){
@@ -302,18 +310,14 @@ app.ContextMenus.initMenu = function(){ // (Called from app.init) Init context m
parentId: "pagemenunew", parentId: "pagemenunew",
title: browser.i18n.getMessage("menuNewBookmark"), title: browser.i18n.getMessage("menuNewBookmark"),
onclick(info, tab) { onclick(info, tab) {
browser.tabs.executeScript(tab.id, { browser.tabs.sendMessage(tab.id, { cmd: app.Messages.Commands.menuCreateBookmark });
code: "window.dial.createBookmark();"
});
} }
}); });
browser.contextMenus.create({ browser.contextMenus.create({
parentId: "pagemenunew", parentId: "pagemenunew",
title: browser.i18n.getMessage("menuNewFolder"), title: browser.i18n.getMessage("menuNewFolder"),
onclick(info, tab) { onclick(info, tab) {
browser.tabs.executeScript(tab.id, { browser.tabs.sendMessage(tab.id, { cmd: app.Messages.Commands.menuCreateFolder });
code: "window.dial.createFolder();"
});
} }
}); });
browser.contextMenus.create({ parentId: "pagemenu", type: "separator" }); browser.contextMenus.create({ parentId: "pagemenu", type: "separator" });
@@ -321,9 +325,7 @@ app.ContextMenus.initMenu = function(){ // (Called from app.init) Init context m
parentId: "pagemenu", parentId: "pagemenu",
title: browser.i18n.getMessage("menuSettings"), title: browser.i18n.getMessage("menuSettings"),
onclick(info, tab) { onclick(info, tab) {
browser.tabs.executeScript(tab.id, { browser.tabs.sendMessage(tab.id, { cmd: app.Messages.Commands.menuEditSettings });
code: "window.dial.editSettings();"
});
} }
}); });
// Create WebExt Link Context menu // Create WebExt Link Context menu
@@ -342,18 +344,14 @@ app.ContextMenus.initMenu = function(){ // (Called from app.init) Init context m
parentId: "itemmenunew", parentId: "itemmenunew",
title: browser.i18n.getMessage("menuNewBookmark"), title: browser.i18n.getMessage("menuNewBookmark"),
onclick(info, tab) { onclick(info, tab) {
browser.tabs.executeScript(tab.id, { browser.tabs.sendMessage(tab.id, { cmd: app.Messages.Commands.menuCreateBookmark });
code: "window.dial.createBookmark();"
});
} }
}); });
browser.contextMenus.create({ browser.contextMenus.create({
parentId: "itemmenunew", parentId: "itemmenunew",
title: browser.i18n.getMessage("menuNewFolder"), title: browser.i18n.getMessage("menuNewFolder"),
onclick(info, tab) { onclick(info, tab) {
browser.tabs.executeScript(tab.id, { browser.tabs.sendMessage(tab.id, { cmd: app.Messages.Commands.menuCreateFolder });
code: "window.dial.createFolder();"
});
} }
}); });
browser.contextMenus.create({ parentId: "itemmenu", type: "separator" }); browser.contextMenus.create({ parentId: "itemmenu", type: "separator" });
@@ -361,18 +359,14 @@ app.ContextMenus.initMenu = function(){ // (Called from app.init) Init context m
parentId: "itemmenu", parentId: "itemmenu",
title: browser.i18n.getMessage("menuProperties"), title: browser.i18n.getMessage("menuProperties"),
onclick(info, tab) { onclick(info, tab) {
browser.tabs.executeScript(tab.id, { browser.tabs.sendMessage(tab.id, { cmd: app.Messages.Commands.menuEditProperties });
code: "window.dial.editProperties(window.dial._selectedItem);"
});
} }
}); });
browser.contextMenus.create({ browser.contextMenus.create({
parentId: "itemmenu", parentId: "itemmenu",
title: browser.i18n.getMessage("menuRefreshItem"), title: browser.i18n.getMessage("menuRefreshItem"),
onclick(info, tab) { onclick(info, tab) {
browser.tabs.executeScript(tab.id, { browser.tabs.sendMessage(tab.id, { cmd: app.Messages.Commands.menuRefreshNode });
code: "window.dial.refreshNode(window.dial._selectedItem);"
});
} }
}); });
browser.contextMenus.create({ browser.contextMenus.create({
@@ -380,27 +374,21 @@ app.ContextMenus.initMenu = function(){ // (Called from app.init) Init context m
title: browser.i18n.getMessage("menuCaptureHere"), title: browser.i18n.getMessage("menuCaptureHere"),
visible: false, visible: false,
onclick(info, tab) { onclick(info, tab) {
browser.tabs.executeScript(tab.id, { browser.tabs.sendMessage(tab.id, { cmd: app.Messages.Commands.menuCaptureHere });
code: "window.dial.captureHere(window.dial._selectedItem);"
});
} }
}); });
browser.contextMenus.create({ browser.contextMenus.create({
parentId: "itemmenu", parentId: "itemmenu",
title: browser.i18n.getMessage("menuCapturePage"), title: browser.i18n.getMessage("menuCapturePage"),
onclick(info, tab) { onclick(info, tab) {
browser.tabs.executeScript(tab.id, { browser.tabs.sendMessage(tab.id, { cmd: app.Messages.Commands.menuCapturePage });
code: "window.dial.capturePage(window.dial._selectedItem);"
});
} }
}); });
browser.contextMenus.create({ browser.contextMenus.create({
parentId: "itemmenu", parentId: "itemmenu",
title: browser.i18n.getMessage("menuDeleteItem"), title: browser.i18n.getMessage("menuDeleteItem"),
onclick(info, tab) { onclick(info, tab) {
browser.tabs.executeScript(tab.id, { browser.tabs.sendMessage(tab.id, { cmd: app.Messages.Commands.menuDeleteNode });
code: "window.dial.deleteNode();"
});
} }
}); });
browser.contextMenus.create({ parentId: "itemmenu", type: "separator" }); browser.contextMenus.create({ parentId: "itemmenu", type: "separator" });
@@ -408,9 +396,7 @@ app.ContextMenus.initMenu = function(){ // (Called from app.init) Init context m
parentId: "itemmenu", parentId: "itemmenu",
title: browser.i18n.getMessage("menuSettings"), title: browser.i18n.getMessage("menuSettings"),
onclick(info, tab) { onclick(info, tab) {
browser.tabs.executeScript(tab.id, { browser.tabs.sendMessage(tab.id, { cmd: app.Messages.Commands.menuEditSettings });
code: "window.dial.editSettings();"
});
} }
}); });
}; };
+33 -1
View File
@@ -84,7 +84,15 @@ app.Messages.Commands = {
refreshNode: 9, refreshNode: 9,
capturePage: 10, capturePage: 10,
settingsChanged: 100, settingsChanged: 100,
gridNodesLoaded: 101 gridNodesLoaded: 101,
menuCreateBookmark: 200,
menuCreateFolder: 201,
menuEditSettings: 202,
menuEditProperties: 203,
menuRefreshNode: 204,
menuCaptureHere: 205,
menuCapturePage: 206,
menuDeleteNode: 207
}; };
app.Messages.init = function(){ app.Messages.init = function(){
browser.runtime.onMessage.addListener(function(request, sender, sendResponse){ browser.runtime.onMessage.addListener(function(request, sender, sendResponse){
@@ -95,6 +103,30 @@ app.Messages.init = function(){
case app.Messages.Commands.gridNodesLoaded: case app.Messages.Commands.gridNodesLoaded:
if(dial.skipUpdate!=true) app.Messages.getNode(dial.path, app.GridNodes._changed); if(dial.skipUpdate!=true) app.Messages.getNode(dial.path, app.GridNodes._changed);
break; break;
case app.Messages.Commands.menuCreateBookmark:
dial.createBookmark();
break;
case app.Messages.Commands.menuCreateFolder:
dial.createFolder();
break;
case app.Messages.Commands.menuEditSettings:
dial.editSettings();
break;
case app.Messages.Commands.menuEditProperties:
dial.editProperties(dial._selectedItem);
break;
case app.Messages.Commands.menuRefreshNode:
dial.refreshNode(dial._selectedItem);
break;
case app.Messages.Commands.menuCaptureHere:
dial.captureHere(dial._selectedItem);
break;
case app.Messages.Commands.menuCapturePage:
dial.capturePage(dial._selectedItem);
break;
case app.Messages.Commands.menuDeleteNode:
dial.deleteNode();
break;
} }
}); });
}; };
+1 -1
View File
@@ -2,7 +2,7 @@
"manifest_version": 2, "manifest_version": 2,
"name": "Quick Dial", "name": "Quick Dial",
"version": "0.1.23", "version": "0.1.24",
"author": "MatMoul", "author": "MatMoul",
"homepage_url": "https://github.com/MatMoul/quickdial-webext", "homepage_url": "https://github.com/MatMoul/quickdial-webext",
"developer": { "developer": {