Сценарий с внедренным контентом не будет редактировать теги ввода на веб-странице

Я пытаюсь разработать собственное расширение диспетчера паролей, и с помощью внедрения скрипта содержимого мне удается заполнить поля user_id и ввода пароля. Однако это работает на некоторых веб-страницах и не работает на других. Для веб-страницы (chase.com), где это не работает, я даже выбрал идентификаторы тегов, проверив отдельные поля ввода и проверив, могу ли я заполнить эти поля, но это не сработает.

У меня такое ощущение, что эти поля динамические и как-то защищены, но каким-то образом Chrome и другие браузеры могут заполнять эти поля сохраненным паролем, поэтому должен быть какой-то способ. Есть ли способ заглянуть в некоторый код браузера с открытым исходным кодом, чтобы понять это больше?

Вот мой манифест. Джейсон

{
    "manifest_version": 2,
    "name": "My Chrome Plugin",
    "description": "This extension will manage passwords",
    "version": "1.0",

    "browser_action": {
        "default_icon": "icon.png"
    },

    "background": {
        "scripts": ["eventPage.js"],
        "persistent": false
    },

    "permissions": [
        "activeTab",
        "http://192.168.1.27/"
    ]
}

фоновый скрипт:

chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.getSelected(null, function(tab) {
        chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
            chrome.tabs.sendMessage(tabs[0].id, {id: "username", pass: "password"}, function(response) {});
        });
        chrome.tabs.executeScript(null, {file: "injected.js"});
    });
}, false);

Внедренный контентный скрипт:

chrome.extension.onMessage.addListener(function(msg, sender, sendResponse) {
    fields = document.getElementsByTagName('input');

    for (var i = 0; i < fields.length; i++) {
        if (fields[i].type.indexOf("password") != -1) {
            fields[i].setAttribute("value", msg.pass);
        }
        if (fields[i].name.indexOf("user") != -1) {
            fields[i].setAttribute("value", msg.id)
        }
    }
});

Когда я вызываю функцию setAttribute для полей ввода, я получаю следующие журналы на консоли. Пожалуйста, предложите, что можно сделать или как я могу отладить это дальше.

[sendMessageClient] Sending command <resize>
chase-ux.min.js:65 Sign In Button Log: Sign In Type [cpo]
chase-ux.min.js:65 [sendMessageClient] Sending command <resize>
chase-ux.min.js:65 Sign In Button Log: Sign In Type [cpo]

0 ответов

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