2014-12-03 2 views
1

Я делаю расширение FF, и я попал в ловушку. Вот что у меня есть:TypeError document.querySelector (...) is null

var canLink = document.querySelector('link[rel="service"]').href; 

Это находит связь с rel = "service", и она отлично работает. Однако, если страница не имеет ссылки на rel = service, она возвращает null и вырывается из остальной части программы. Как я могу сделать так, чтобы if 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); 
} 
+0

Убедитесь, что у вас есть перед тем как работать с ним. – epascarello

+0

'var canLink = (document.querySelector ('link [rel =" service "]') || {href:" "}). Href;' – Andreas

+0

Можете ли вы сделать cfx на этом и загрузить xpi на github и поделиться – Noitidart

ответ

5

Используйте простое условие

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 
} 
+0

Спасибо за быстрый ответ. Я добавил, но ошибка сохраняется. Вот ошибка: console.error: canon-check: Сообщение: TypeError: document.querySelector (...) null Стек: @resource: //gre/modules/addons/XPIProvider.jsm -> jar: file: /// c:/users/yunk/ appdata/local/temp/tmpsut7oh.mozrunner/extensions/[email protected] i! /bootstrap.js -> ресурс: // gre/modules/commonjs /toolkit/loader.js -> ресурс : //gre/modules/commonjs/sdk/loader/sandbox.js -> ресурс: // jid1-iqy7atsrgq7q3w- at-jetpack/canon-check/data/getHTML.js : 2: 12 –

+1

@JasePellerin, тогда ошибка не в этой строке .. это где-то еще в коде, который вы не указали –

+0

Да, ссылка, на которую ссылается, не имеет смысла. Я напишу весь файл ниже. –

Смежные вопросы