Javascript 单击链接上不工作的处理程序

Javascript 单击链接上不工作的处理程序,javascript,jquery,google-chrome,google-chrome-extension,Javascript,Jquery,Google Chrome,Google Chrome Extension,我有一个chrome扩展,其中 popup.html,其中我调用jquery.js、popup.js和link.js ... <script src="jquery.js"></script> <script src="popup.js"></script> <script src="link.js"></script> </head> 弹出窗口工作并显示它应该显示的内容,但

我有一个chrome扩展,其中

popup.html,其中我调用jquery.js、popup.js和link.js

    ...
    <script src="jquery.js"></script>
    <script src="popup.js"></script>
    <script src="link.js"></script>
  </head>
弹出窗口工作并显示它应该显示的内容,但链接不会打开新选项卡

如果我去chrome的控制台,我不会得到任何错误,但是如果我复制/粘贴link.js jquery,链接会在之后工作


我做错了什么

您的代码在
link.js
之前加载
popup.js
。相关部分按以下顺序执行:

// popup.js
$(function() {
    $('a').click( ... );
})
// link.js
document.addEventListener('DOMContentLoaded', function() {
    streamGenerator.requestStreams(); //<-- Creates the links
});
首先,您将
click
事件绑定到所有现有的锚(无)。此后,您将添加新链接。这一顺序显然行不通

可以通过交换
popup.js
link.js
的顺序来解决此问题,或者使用:


非常感谢它的工作!你能解释一下为什么popup.js在link.js之前被加载,即使它在dom中是在link.js之前吗?嗯,
之前。对不起,我的意思正好相反。。。您在回答中切换了两个脚本。。。但是popup.js应该在link.js之前加载。link.js是使用.click事件处理程序创建选项卡的脚本。啊,好吧,这仍然是一个时间问题:
popup.js
运行AJAX请求,这需要一些时间才能完成。当请求完成时,插入
元素的处理程序在
$('a')之后运行。单击(…)
已运行。
$(function() {
  $('a').click(function(){
    chrome.tabs.create({url: $(this).attr('href')});
  });
})
// popup.js
$(function() {
    $('a').click( ... );
})
// link.js
document.addEventListener('DOMContentLoaded', function() {
    streamGenerator.requestStreams(); //<-- Creates the links
});
// Run after the DOMContentLoaded "domready" event:
$('a').click(...);
streamGenerator.requestStreams(); // Creates the links
$(document).on('click', 'a', function() {
    chrome.tabs.create({url: this.href});
});