Расширение Chrome addEventListener null

Я только начал изучать JS несколько недель назад и пытаюсь создать расширение для Chrome. Я создал файлы manifest.json, popup.html, popup.js и content.js.

Когда я пытаюсь запустить консоль фоновой страницы в Chrome, чтобы проверить, работает ли popup.js, я продолжаю получать сообщение об ошибке:

Uncaught TypeError: Cannot read property 'addEventListener' of null
at popup.js:8

Я попытался переместить скрипт в html в нижнюю часть тела, но он по-прежнему заканчивается ошибкой, и я попытался реализовать:

document.addEventListener('DOMContentLoaded', function () {
    //   My code here.. ( Your code here  )
    }); 

в моем popup.js и методе windows.onload, но до сих пор не смог избавиться от ошибки.

Если бы кто-то мог указать на какие-либо ошибки в моем коде и сказать, что не так, я был бы очень признателен. Спасибо

ВСПЛЫВАЮЩЕЕ HTML

<!DOCTYPE html>
<html>
<head>
    <title>Like IG Links</title>
</head>

<body>

    <h3><center>Paste Links Below</center></h3>
    <hr>
    <textarea rows = "10" cols = "60" id = "urls"></textarea>
    <br>
    <textarea rows = "1" cols = "5" id = "counter" disabled></textarea>
    <br>
    <br>

    <button type = "submit" align = "center" style = "width:60px;"
            id = "start">Start</button>

    <br> 
    <br>

    <button type = "submit" align = "right" style = "width:60px;"
            id = "stop">Stop</button>          

   <script type = "text/javascript" src = "popup.js"></script>              

</body>

</html>

СОДЕРЖАНИЕ JS

console.info('CHROME');

POPUP JS

console.info('background running');

function loadUrls() {
console.info("123");
}

var startbutton = document.getElementById("start");
startbutton.addEventListener('click', loadUrls);    

МАНИФЕСТ JSON

{ 
"manifest_version": 2,      
"name": "Like IG Links",
"version": "1.0",    
"description": "Like IG Links",

"content_scripts": [
    {
        "matches": [
            "<all_urls>"
        ],
        "js": ["content.js"]
    }    
],

"background": {
    "scripts": ["popup.js"]
    },

"browser_action": {
"default_icon": "icon.png",  
"default_popup": "popup.html"                 
},

"permissions": ["tabs", "storage", "activeTab"]
}

Предлагаю сначала прочитать о расширениях архитектура. Фоновая страница и всплывающее окно - это разные вещи, и вы ищете элемент на фоновой странице, который является пустым шаблоном html с прикрепленным к нему скриптом, поэтому он не найдет ваш startbutton. Когда вы щелкаете значок расширения, все работает так, как ожидалось, и вы не увидите никаких ошибок во всплывающей консоли, которые вы получите, выбрав соответствующий вариант после щелчка правой кнопкой мыши по значку расширения на панели инструментов.

Luka Čelebić 15.05.2018 01:45
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
894
1

Ответы 1

Удалите из манифеста часть фонового сценария. После обновления расширения ошибки должны исчезнуть. В расширении, над которым я работаю, у меня были jquery.js и popup.js в HTML и в манифесте. Тег фонового сценария для манифеста предназначен для логики, которая отслеживает события браузера и постоянно на них реагирует, а не для js, стоящих за расширением HTML.

Другие вопросы по теме