Javascript TypeError文档。querySelector(…)为空

Javascript TypeError文档。querySelector(…)为空,javascript,firefox,firefox-addon,firefox-addon-sdk,Javascript,Firefox,Firefox Addon,Firefox Addon Sdk,我正在进行FF扩展,遇到了一个障碍。以下是我所拥有的: var canLink = document.querySelector('link[rel="service"]').href; 这会找到一个与rel=“service”的链接,效果很好。但是,如果页面没有rel=service的链接,它将返回null并中断程序的其余部分。我如何使它在canLink=null时不中断 有没有办法抓住这个错误 这是文件。第12行是self.port.emit,工作正常 //Get link if it e

我正在进行FF扩展,遇到了一个障碍。以下是我所拥有的:

var canLink = document.querySelector('link[rel="service"]').href;
这会找到一个与rel=“service”的链接,效果很好。但是,如果页面没有rel=service的链接,它将返回null并中断程序的其余部分。我如何使它在canLink=null时不中断

有没有办法抓住这个错误

这是文件。第12行是self.port.emit,工作正常

//Get link if it exists
var elem = document.querySelector('link[rel="service"]').href,
canLink = elem ? elem.href : "";

if (canLink){
    self.port.emit("link", canLink);
}

else {
        canLink = "";
        self.port.emit("link", canLink);
}
使用一个简单的条件

var elem = document.querySelector('link[rel="service"]');
var canLink = elem ? elem.href : "";
现在,在代码中,您可以签入代码中的
(空字符串)并采取进一步的措施,如

if(canLink !== "") {  // could be just written as if(canLink){ ... }
   // do something with the canLink now
}

在使用元素之前,请检查您是否拥有该元素。
var canLink=(document.querySelector('link[rel=“service”]”)|{href:})。href你能不能在上面做cfx,然后把xpi上传到github上,然后共享我让它工作了!当我有机会的时候,我会把它的一个版本放在github上。根据@AmitJoki的回答,行
var elem=document.querySelector('link[rel=“service”]')。href,
应该是
var elem=document.querySelector('link[rel=“service”]),
。问题是您正试图访问
null
值(
null.href
)的属性。该答案中的更改点是在尝试访问属性之前检查
null
undefined
值。感谢您的快速回复。我添加了这个,但错误仍然存在。以下是错误:console.error:canon check:Message:TypeError:document.querySelector(…)为空堆栈:@resource://gre/modules/addons/XPIProvider.jsm ->罐子:file:///c:/users/yunk/ appdata/local/temp/tmpsut7oh.mozrunner/extensions/jid1-iQY7ATsRGQ7q3w@jetpack.xp我/bootstrap.js->resource://gre/modules/commonjs/toolkit/loader.js ->resource://gre/modules/commonjs/sdk/loader/sandbox.js->resource://jid1-iqy7atsrgq7q3w- 在jetpack/canon check/data/getHTML.js:2:12@JasePellerin那么错误就不在那一行了。。它在代码中的其他地方,您没有显示。是的,它引用的行没有意义。我将在下面发布整个文件内容。@JasePellerin我感觉
document
变量不是您所期望的,我想无论
document
是什么,它都没有
querySelector
,所以确保
document
确实是文档。