Расширение Google Chrome: для цикла назначения функций chrome.tabs.create

#javascript #google-chrome #tabs

#javascript #google-chrome #вкладки

Вопрос:

Я хочу иметь список ссылок, каждая из которых открывает другое видео Youtube, которое было предопределено в links.xml . Этот файл работает отлично, и все ссылки генерируются, но всякий раз, когда я нажимаю на любую из них, открывается новая вкладка с URL-адресом последней ссылки в списке. Что я делаю не так?

 <style>
body { width:550px; }
</style>

<script>
var req = new XMLHttpRequest();
req.open("GET", "links.xml");
req.onload = showLinks;
req.send(null);

function showLinks() {
  var links = req.responseXML.getElementsByTagName("link");
  var p, a, h, t;

  for (var i = 0, link; link = links[i]; i  ) {
    p = document.createElement("p");
    a = document.createElement("a");
    h = link.getAttribute("http");
    t = link.getAttribute("title");
    p.appendChild(document.createTextNode((i 1)   ') '));
    a.href = h;
    a.onclick = function() { chrome.tabs.create( { url: h } ); }
    a.appendChild(document.createTextNode(t));
    p.appendChild(a);
    document.body.appendChild(p);
  }
}
</script>
  

Комментарии:

1. Не уверен, есть ли какие-либо другие ошибки в вашем коде, но, похоже, вам нужно использовать замыкания, проверьте эту ссылку: mennovanslooten.nl/blog/post/62

2. Спасибо, это именно то, что мне было нужно! Я не уверен, как пометить это как ответ, поэтому я просто оставлю это.

Ответ №1:

Spacevillain был правильным:

кажется, вам нужно использовать замыкания, проверьте эту ссылку:http://www.mennovanslooten.nl/blog/post/62