Расширение Chrome с вкладками

Последние три дня я тратил на попытки получить эту работу, поэтому, пожалуйста, не отвечайте со ссылкой на Chrome API или что-то в этом роде.

Я разрабатываю расширение для Chrome, которое взаимодействует с базой данных mySql, чтобы получить любимые веб-сайты пользователя и логин / пароль для каждого из этих веб-сайтов (скажем, Facebook fbuser fbpass, google gguser ggpass...)

Поэтому цель расширения - открыть новую вкладку для каждого веб-сайта и выполнить вход в систему.

Я установил связь с базой данных, и я могу успешно открывать новые вкладки с веб-сайтами, но я собираюсь вставить имя пользователя и пароль на каждом веб-сайте. Моя проблема в том, что я не могу использовать document.getElementsById ('input')... потому что он возвращает мне элементы в моем всплывающем окне, а не на веб-странице.

Итак, я прочитал о chrome.tabs.executeScript() и пытаюсь его использовать (кажется, это то, что мне нужно использовать для доступа к DOM веб-страницы).

Поэтому я использую что-то вроде:

chrome.tabs.create({"url": web[i],"selected":false},function(tab) {
        chrome.tabs.executeScript(tab.id, {file:"write.js"}, function(){
        });
        });

И "write.js" должен выполнить автозаполнение.

Итак, здесь начинаются мои проблемы:

У меня есть "оповещение (" Я в ");" сообщение внутри write.js, и оно никогда не отображается (поэтому остальная часть функции никогда не вызывается). (Я нашел эту функцию "write.js" в интернете).

И здесь я выложу части моего всплывающего html, манифеста и js, возможно, мне придется что-то там изменить, потому что я попробовал то, что видел в большинстве примеров и не работает для меня.

manifest.json:

{
  "name": "MyExtension",
  "version": "1.0",
  "description": "My chrome extension",
  "icons":{
      "128":"icon_128.png"
  },
  "browser_action":   {
      "default_icon": "icon.png",
      "popup": "consulta_empleados.html"
  },
  "permissions": [
    "http://*/*",
    "https://*/*"
  ]
}

consulta_empleados.html (всплывающее окно):

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Consulta Registro con AJAX</title>
<script src="ajax.js"></script>
</head>
<body>
<form name="form1" method="post" >
  <label>
  <div align="center">Email<br>
    <input type="text" name="email" id="email">
  </div>
  </label>
  <p align="center">
    <label>
    <input type="submit" name="open" id="open" value="Log In" onClick="runScript()">
    </label>
  </p>
</form>
<div id="resultado"></div>
<div id="prova"></div>
</body>
</html>

файл ajax.js:

function runScript(){
      ...
      //here I fill a vector with the usernames, the websites and the passwords from the data coming from my database. var num is the number of websites
      ...
  var i=0;
  while(i<num){
    chrome.tabs.create({"url": web[i],"selected":false},function(tab) {
        chrome.tabs.executeScript(tab.id, {file: "write.js"}, function(){

        });
        });
    i++;
  }

}

write.js:
function write() {
     ...
      alert("I'm in");
     ...      
} 
write();

Заранее спасибо.

2 ответа

Взгляните на консоль вашего devtools, должно быть какое-то сообщение об ошибке. Чтобы использовать contentcript, вам нужно tabs разрешение

{
  "name": "My extension",
  ...
  "permissions": [
    "tabs", "http://www.google.com/*"
  ],
  ...
}

ИМХО вместо "выделенного": ложного нужно "активное": ложного

Вы также можете проверить это, добавив еще одно предупреждение перед chrome.tabs.executeScript, чтобы увидеть, вызывается ли обратный вызов chrome.tabs.create.

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