Разрабатываю расширения для Chrome (Opera and Yandex). Появилась ошибка в консоли "popup.js:11 - Uncaught TypeError: Cannot set property 'onclick' of null". Дополнение работает, но с ошибкой.
Popup.js
window.addEventListener('DOMContentLoaded', function() {
var btnGetKeyWord = document.getElementById('btnGetKeyWord');
var lblFeedback = document.getElementById('lblFeedback');
var txtResult = document.getElementById('txtResult');
var btnCopy = document.getElementById('btnCopy');
// Get Keyword
btnGetKeyWord.onclick = function () {
chrome.tabs.getSelected(null, function (tab) {
chrome.tabs.sendRequest(tab.id, { method: "getTag" }, function (response) {
if (response == undefined || response.method !== "getTag" || response.data == '') {
lblFeedback.innerText = 'Keywords not found. Select the English language site and try again';
lblFeedback.className = "alert alert-danger";
return;
}
txtResult.innerText = response.data;
lblFeedback.innerText = 'Found ' + response.count + ' key words.';
lblFeedback.className = "alert alert-success";
});
});
};
// Function Copy
btnCopy.onclick = function () {
if (txtResult.innerText.indexOf('How to Use') !== -1) {
lblFeedback.innerText = 'Active when keyword is detected.';
lblFeedback.className = "alert alert-danger";
return;
}
if (lblFeedback.innerText.indexOf('Copied') == -1 && lblFeedback.innerText.indexOf('Not found words.') === -1) {
lblFeedback.innerText = lblFeedback.innerText + ' Copied!';
lblFeedback.className = "alert alert-success";
}
txtResult.select();
document.execCommand('copy');
};
});
Посмотреть все файлы дополнения можно вот здесь https://github.com/blinovartem/kw
Ваш manifest файл содержит следующие строки:
...
"background": {
"scripts": ["popup.js"] // Автоматическая перезагрузка расширения
}
То есть вы используете скрипт popup.js на background-странице.
А указанных кнопок там просто не существует, о чем вам и сообщает getElementById
возвращая null
.
P.S. Совет: воздержитесь от использования комментариев в JSON. Стандарт не поддерживает их наличие.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Привет!Нужно перенести проект созданный на react-create-app в Gatsbyjs но там разная структура файлов и нету файла сss
В контроллере из $rootScope хочу достать данные пользователяОчень странные вещи происходят
Есть массив, вывожу из него только нужные мне значения следующим кодом:
Cоздал front-end на react-create-app и решил натянуть на Gatsbyjs, но тут возникла проблема компонент Header