Javascript 单击链接上不工作的处理程序
我有一个chrome扩展,其中 popup.html,其中我调用jquery.js、popup.js和link.jsJavascript 单击链接上不工作的处理程序,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> 弹出窗口工作并显示它应该显示的内容,但
...
<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});
});