AFAIK, все переменные верхнего уровня в скриптах содержимого должны быть глобально уникальными в пределах окна. Поэтому, если два скрипта содержимого содержат строку типа let port = ...;
, расширение будет нарушено. Такое поведение делает разделение проблем очень трудным, потому что, если вы сгруппируете функциональность по каталогам и файлам, вы будете запутывать, какие имена переменных все еще можно использовать. Есть ли канонический способ избежать этой проблемы?
Вот минимальный пример:
manifest. json
{
"manifest_version": 2,
"name": "test",
"version": "1.0",
"applications": {
"gecko": {
"id": "test_script@example.com"
}
},
"content_scripts": [
{
"matches": ["*://*.google.com/*"],
"js": ["read/index.js", "write/index.js"]
}
]
}
read / index. js
console.log("i am read");
запись / индекс. js
console.log("i am write");
Когда страница Google загружена, на консоль будут выведены «я прочитан» и «я пишу». Но что, если мы сделаем несколько небольших изменений в скриптах содержимого:
чтение / индекс. js
let message = "i am read";
console.log(message);
запись / индекс. js
let message = "i am write";
console.log(message);
Теперь будет печататься только «я прочитан».