开发者问题收集

未捕获的类型错误:无法在 Chrome 扩展程序中读取 null 的属性“0”

2015-05-12
1415

我正在尝试创建一个 Google 扩展程序,在创建过程中遇到的所有问题中,我遇到了一个问题,即使查看了 StackOverflow 中的大量答案,我也不知道该如何解决。

基本上,此代码应该打开一个弹出窗口,当您单击此弹出窗口中的链接时,该弹出窗口会替换现有弹出窗口。

因此,当您单击“clickme”链接时,此代码会打开“popup2.html”。答案可能很明显,但我的 javascript 知识已经生疏了……

var hrefs = document.getElementById("clickme");

function openLink() {
    var href = this.href;
    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
        var tab = tabs[0];
        chrome.tabs.update(tab.id, {url: href});
    });
}

for (var i=0,a; a=hrefs[i]; ++i) {
    hrefs[i].addEventListener('click', openLink);
}
document.getElementById('clickme').addEventListener('click', hello);

提前谢谢您!

1个回答

问题是您正在从 hrefs 变量访问 0 属性,但该变量为空。

hrefs[i].addEventListener('click', openLink);

您的代码假设 hrefs 包含一个数组,但它是一个 DOMElement。 i 在您的情况下为 0。我猜循环也是一个无限循环。

A1rPun
2015-05-12