我正在尝试在Chrome扩展程序中动态创建上下文菜单项;这涉及向主扩展进程发送请求以修改菜单,并阻止显示菜单直到发送响应。我整天都在尝试不同的解决方案,而我还没有想出一个有效的解决方案。例如,
node.oncontextmenu = initContext({...});
initContext = function(menuParams) {
return function(event) {
if (event.showContext) // Menu has been created and is ready for display
return true;
event.preventDefault(); // Block original menu event
chrome.extension.sendRequest(menuParams, function() { // Send request to modify menu,
event.showContext = true; // generate new event when menu is ready
event.target.dispatchEvent(event);
});
};
};
菜单被preventDefault()阻止,当菜单准备好显示时,执行chrome.extension.sendRequest()的回调函数。使用此解决方案(以及我尝试过的所有其他解决方案),菜单永远不会显示。我很感激任何帮助。