Я делаю WebExtension для Chrome и Firefox, который добавляет больше информации в GitHub.Предполагается, что он работает быстрее, чем существующие расширения.
У меня настроен манифест, как рекомендует документация Mozilla.
{
"manifest_version": 2,
"name": "GitHub Extended",
"version": "0.0.1",
"description": "Adds information to GitHub normally accessible only by the API.",
"permissions": [
"https://github.com/*"
],
"content_scripts": [
{
"all_frames": true,
"run_at": "document_start",
"matches": [
"https://github.com/*"
],
"js": [
"source/github.js",
"source/repository.js"
]
}
]
}
Когда страница загружена, сценарии содержимого внедряются.Файл github.js
представляет собой легкую оболочку вокруг API GitHub, а repository.js
- это код для модификации DOM корневой страницы основного репозитория.
Самый важный код там - это preloader, который делаетзапрос API во время загрузки страницы и ожидает завершения обоих событий перед добавлением в DOM.
Хотя этот текущий код отлично работает в Chrome, в Firefox он просто ничего не делает.Я попытался проверить это, поместив console.log("I'm loaded!");
в repository.js
.Ничего не напечатано.Почему этот код не работает в Firefox?
function beginPreload() {
console.log("Test from preload scope!");
let urlMatch = window.location.pathname.match(/\/([\w-]+)\/([\w-]+)/);
console.log(urlMatch);
Promise.all([
getSortedReleases(urlMatch[1], urlMatch[2]),
documentReady()
]).then((values) => {
let releaseJson = values[0];
let actionsEl = document.getElementsByClassName("pagehead-actions")[0];
let dlCount = 0;
for (release of releaseJson)
for (asset of release.assets)
dlCount += asset.download_count;
let buttonEl = createDownloadButton(
releaseJson[0].html_url,
window.location.pathname + "/releases",
formatNum(dlCount)
);
actionsEl.appendChild(buttonEl);
});
}
beginPreload();
console.log("Test from global scope!");