Javascript: задержка отображения контекстного меню (Chrome) - PullRequest
2 голосов
/ 06 сентября 2010

Я пытаюсь динамически создавать пункты контекстного меню в расширении 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);
    });
  };
};

Меню заблокировано с помощью protectDefault (), и функция обратного вызова chrome.extension.sendRequest () выполняется, когда меню готово к отображению. С этим решением (и всеми другими, которые я пробовал), меню никогда не отображается. Буду признателен за любую помощь.

...