Как решить, что расширение Chrome не может найти событие DOM при срабатывании по клику? - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть расширение Chrome, которое срабатывает при нажатии кнопки, расширение по-прежнему не может получить доступ к элементам DOM, даже если страница явно загружена.

Я видел, что другие посты говорят, что это потому, что элементы создаются динамически, но не в моем случае.

Единственное, что работает, - это обернуть мой debugTools.js в тайм-аут изапустить его примерно через 800 миллисекунд.

Код внутри debugTools.js - это неработающая часть.Я не понимаю, почему слово «theWrapper» не определено, даже если я жду 10 минут, прежде чем нажать мою кнопку, которая выполняет код.

Обертка определенно существует на странице, на которую я перехожу, прежде чем нажимать мою кнопку.Это есть в обычном коде HMTL.Не генерируется динамически.Я чувствую, что размещение этого кода страницы просто запутает вопрос.

// manifest.json
{
    "name": "Jams Dev Tools",
    "version": "1.0",
    "description": "Provides dev tools",

    "background": {
        "scripts": ["background.js"],
        "persistent": true
    },

    ... // icons are included here

    "manifest_version": 2,

    "web_accessible_resources": [
        "debugTools.css",
        "debugTools.js"
    ],
    "permissions": [
    "https://*/*",
    "http://*/*",
    "tabs",
    "activeTab"
    ]
}
// debugTools.js

var theWrapper = document.getElementById("wrapper");
console.log(theWrapper.style.width);

// injectFiles.js

if(document.getElementById("debugJs") == undefined) {
    // Inject Css
    var debugJs = document.createElement('script');
    var theSource = chrome.extension.getURL("debugTools.js");
    debugJs.setAttribute( 'src', theSource );
    debugJs.id = "debugJs";
    document.body.appendChild(debugJs);
}
// background.js

chrome.browserAction.onClicked.addListener(function (tab) {
    // for the current tab, inject the "inject.js" file & execute it
    chrome.tabs.executeScript(tab.id, {
        file: 'injectFiles.js'
    });
});

1 Ответ

0 голосов
/ 14 февраля 2019

Хорошо, так что это был один из тех случаев, когда вы просто не можете видеть лес за деревьями.Спасибо всем за любую помощь, которую вы оказали.Оказывается, я идиот.Проблема может быть подытожена приведенным ниже фрагментом.

debug();

var theWrapper = document.getElementById("wrapper");

function debug() {
   console.log(theWrapper.width);
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...