Сценарий с внедренным контентом не будет редактировать теги ввода на веб-странице
Я пытаюсь разработать собственное расширение диспетчера паролей, и с помощью внедрения скрипта содержимого мне удается заполнить поля 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]