Взять строку из локального файла, вставить во ввод на веб-сайте

Я пытаюсь сделать расширение Chrome, чтобы автоматизировать / упростить несколько задач на работе. Одна вещь, которую мы должны регулярно делать, - это входить в клиентские модемы, используя засеянный пароль дня Arris. Мне удалось загрузить текстовый файл, содержащий пароль дня, отсортированный по дате, и получить пароль, соответствующий текущей дате, но прямо сейчас нам нужно вручную открыть сетевой диск, найти файл, найти текущую дату (создается каждый potd за год и разбивается между 4 файлами по 3 месяцами), а затем копировать и вставлять. Это не доставляет неудобства массивный, но я хотел бы автоматически вставить это в поле пароля, если это вообще возможно.

manifest.json

{
"name": "Web Kit",
"version": "0.1",
"description": "Modifications for web-based tools",
"permissions": ["storage", "activeTab"],
"content_scripts": [
    {
        "matches": ["http://example.com"],
        "css": ["tickets.css"],
        "js": ["tickets.js"]
    },
    {
        "matches": ["https://example.com"],
        "js": ["iglass.js"]
    },
    {
        "matches": ["https://example.com/*"],
        "css": ["iglass.css"]
    },
    {
        "matches": ["<all_urls>"],
        "js": ["gateway.js"]
    },
    {
        "matches": ["file:///*"],
        "js": ["potd.js"]
    }
],
"web_accessible_resources": [
    "file:///home/shea/potd.txt"
],
"manifest_version": 2
}

gateway.js

Этот сценарий проверяет, соответствует ли домен диапазону частных IP-адресов класса A, и соответственно заполняет некоторую информацию.

var user = "technician";
var potd;
var site = location.hostname;
var regex = new RegExp("(10)(\.([2]([0-5][0-5]|[01234][6-9])|[1][0-9][0-9]|[1-9][0-9]|[0-9])){3}");
var match = site.match(regex);
if (match != null) {
    document.getElementById("username").value = user;
    document.getElementById("password").value = potd;
}
else {
    console.info("Not a gateway login.")
}

potd.js

Этот файл анализирует potd.txt на предмет строки, в которой начальные 8 символов соответствуют текущей дате, а затем берет последние 10 для пароля дня.

// We can load all the POTD files as an array and check them one at a time
// if (location == file) can be nested in a for loop where file is then file[i]

file = "file:///home/shea/potd.txt";

var date = new Date();
var month = (date.getMonth() + 1).toString();
if (month.length < 2) {
    month = "0" + month;
}
var day = date.getDate().toString();
if (day.length < 2) {
    day = "0" + day;
}
var year = (date.getFullYear().toString()).slice(-2);
var dateStr = month + "/" + day + "/" + year;
if (location == file) {
    var content = new XMLSerializer().serializeToString(document);
    var lines = content.split('\n');
    for (var i = 2; i < 10; i++) {
        var potd = lines[i].substr(10);
        if (lines[i].substr(0, 8) == dateStr) {
            alert(potd);
            if (!potd) {
                console.info("Something went wrong, no POTD stored...");
            }
            else {
                chrome.storage.sync.set({'date': dateStr}, function() {
                    console.info('Setting saved');
                });
                chrome.storage.sync.set({'potd': potd}, function() {
                    console.info('Setting 2 saved');
                });
            }
        }
    }
}
else {
    console.info("Not the potd file");
}

Вы можете видеть, где я пытался использовать chrome.storage.sync, но, честно говоря, я не совсем понимаю это и, похоже, не могу заставить его работать.

TL; DR Я хочу взять строку из текстового файла potd.txt и вставить ее в текстовое поле в http: //10.*.*.*

У меня такое чувство, что это может не сработать, потому что эти файлы не находятся в одном домене, но я подумал, что если кто-нибудь может мне помочь, ТАК может.

В инструментах разработчика браузера есть отладчик, поэтому вы можете установить точку останова, и когда она сработает, вы можете проверить переменную, выполняя код построчно. Не видя файла potd.txt или не пробуя расширение, я не уверен, что мы можем помочь, поэтому вам нужно отладить его и определить, где именно он не работает. Кстати, ваш web_accessible_resources ничего не делает, так как он может перечислять только локальные ресурсы вашего расширения.

wOxxOm 07.01.2019 05:34

Спасибо за ответ! Похоже, мне придется упаковать текстовые файлы с расширением. Я надеялся избежать этого на случай, если расширение будет распространено или что-то в этом роде.

Thomas Ramage 07.01.2019 14:30

Вы можете получить доступ к содержимому файла через XHR / fetch по его URL-адресу file: // в фоновом сценарии (не в сценарии содержимого), если 1) вы добавляете URL-адрес в «разрешения», 2) ваши пользователи хотят разрешить доступ к файлу в сведения об установленном расширении на странице chrome: // extensions.

wOxxOm 07.01.2019 14:54
Поведение ключевого слова "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
3
50
0

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

Похожие вопросы

Как я могу получить данные с такого веб-сайта, как Apple или Google, с помощью javascript?
Использование Braintree Dropin UI "braintree is not defined"
Почему мой require () внутри моего img не работает правильно при его использовании с Bulma?
Реагировать на динамическую панель поиска, не обновляющую список после выбора товара в приложении корзины покупок
Js устанавливает случайное значение внутри цикла
Как реализовать игровой цикл с requestAnimationFrame в нескольких компонентах React Redux?
Как проверить активные подписки на наблюдаемые объекты, чтобы избежать утечек памяти в Angular
Компонент React D3 не был отключен при перенаправлении (компонента) с помощью history.push ()
Простой автономный тест babel.js не работает в Chrome v40 из-за неполифилованных функций "undefined is not a function"
Визуализировать локальное изображение в компоненте Vue, где местоположение изображения хранится в атрибуте данных