从本地文件中提取字符串,插入网站上的输入内容

时间:2019-01-06 23:35:30

标签: javascript google-chrome-extension

我正在尝试创建chrome扩展程序来自动执行/简化一些工作。我们通常要做的一件事是使用种子式Arris每日密码登录客户调制解调器。我已经能够加载包含按日期排序的每日密码的文本文件,并获取与当前日期相关的密码,但是现在我们必须手动打开网络驱动器,找到该文件,找到当前日期(生成该年份的每个日期,并按3个月的分组将其分为4个文件),然后复制并粘贴。这不是很大的麻烦,但我想尽可能将其自动插入密码字段。

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

此脚本检查域是否匹配A类私有IP范围,并相应地填写一些信息。

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.log("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.log("Something went wrong, no POTD stored...");
            }
            else {
                chrome.storage.sync.set({'date': dateStr}, function() {
                    console.log('Setting saved');
                });
                chrome.storage.sync.set({'potd': potd}, function() {
                    console.log('Setting 2 saved');
                });
            }
        }
    }
}
else {
    console.log("Not the potd file");
}

您可以看到我在哪里尝试使用chrome.storage.sync,但是老实说,我并没有完全理解它,而且似乎也无法使其正常工作。

TL; DR我想从potd.txt文本文件中提取一个字符串并将其插入http://10.*.*.*中的文本字段中

我觉得它可能不起作用,因为这些文件不在同一个域中,但是我想知道是否有人可以帮助我,

0 个答案:

没有答案