Итак, я создаю расширение, которое автоматически заполняет различные типы форм. Поскольку из URL не видно, какая форма используется на конкретном веб-сайте, мне нужно сопоставить все URL в моем манифесте. Я пытаюсь определить форму по атрибуту sr c на веб-странице.
Некоторые поля определенной формы находятся не в первом кадре. Так что "all_frames" должно быть правдой в моем манифесте. Это означает, что контент. js запускается один раз для каждого кадра или iFrame.
**content.js:**
async function checkForPaymentType(value, attribute = 'src') {
return document.querySelectorAll(`[${attribute}*="${value}"]`);
}
let hasThisForm;
document.addEventListener('DOMContentLoaded', () => {
checkForPaymentType('formJs.js').then((value) => {
if(value.length) {
hasThisForm = true;
}
if(hasThisForm)
fillForm();
});
});
Теперь проблема заключается в том, что только первый кадр имеет "src = 'form Js. js". атрибут в одном из его элементов. Таким образом, он заполняет только те поля в первом кадре.
Моя идея решения
Я пытаюсь сделать что-то вроде глобальной логической переменной ('hasThisForm'), которую можно установить только в true. Поэтому, как только первый кадр обнаружил, что это эта форма на веб-сайте, другие кадры также запускают fillForm ().
Проблемы
1 .Я не могу установить переменную, которая может быть прочитана из всех выполнений.
2. Мне нужны другие исполнения содержимого. js для ожидания первого.
Другим решением было бы иметь что-то вроде window.querySelectorAll, поэтому при каждом выполнении содержимого. js выполняет поиск по всей странице, а не только в ее рамке.
Заранее спасибо:)