Цикл создания нескольких контекстных меню - PullRequest
0 голосов
/ 12 декабря 2011

У меня есть кусок кода:

        for (game in settings_object.games)
        {   
            chrome.contextMenus.create({
                "title": "Add thread("+request.thread+") to game: "+game,
                "contexts":["page"],
                "onclick": function () {addThreadToGame(game,request.thread)}
            });

        }

, который генерирует контекстное меню, например:

  • Добавление темы (1234) в игру: ID игры One
  • Добавить нить (1234) в игру: ID игры два
  • Добавить нить (1234) в игру: ID игры три

, и цель заключается в том, когда пользовательнажимает на «Добавить тему (1234) в игру: идентификатор первой игры» затем addThreadToGame («идентификатор первой игры», «1234») получить выполнено ... к сожалению, похожекак addThreadToGame всегда запускается как addThreadToGame («Идентификатор третьей игры», «1234») , поскольку значение, передаваемое функции, всегда является последним значением, которое она имеет во время выполнения, а не во время создания меню ...что мне не хватает?

1 Ответ

1 голос
/ 13 декабря 2011

Отработан ответ:

      for (game in settings_object.games)
      {   
          chrome.contextMenus.create({
              "title": "Add thread("+request.thread+") to game: "+game,
              "contexts":["page"],
              "onclick": (function(element) {
                      return function(info, tab) {
                          addThreadToGame(element,request.thread)
                      }
                  })(game)

          });
      }

после адаптации кода, найденного в выборе и поиске по сайту в расширении Chrome

...