Выполнить мой автозаполнение Javascript в расширении Chrome нажмите

У меня есть рабочий Javascript, который впервые запрашивает у пользователя его адрес электронной почты и пароль; а затем он автоматически заполняет имя пользователя и пароль всякий раз, когда пользователь повторно посещает эту веб-страницу. В моем html-коде мне просто нужно вызвать функцию checkCookie(), чтобы выполнить это на JSFiddle.net.

Теперь я хочу создать расширение Chrome, которое при нажатии запускает автозаполнение JS. У меня есть эти коды, но при нажатии на расширение я не получаю вывода. Может ли кто-нибудь предложить мне, что я делаю неправильно.

 // manifest.json

{
   "manifest_version": 2,

   "name": "Auto-fill Passwords",
   "description": "This extension autofill password on click.",
   "version": "1.0",    
   "browser_action": {
   "default_icon": "icon.png"
    },

   "background": {
   "scripts": ["background.js"]
    }
}




// background.js
chrome.browserAction.onClicked.addListener(function (tab) 
{ //Fired when User Clicks ICON

    chrome.tabs.executeScript(tab.id, {
        "file": "autofill.js"
    }, function () { 

  function setCookie(c_name, value, exdays) {
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + exdays);

            var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
            document.cookie = c_name + "=" + c_value;

        }

function checkCookie() {
var username = prompt("Please enter your name:", "");
var n= getCookie("username",username);
if(n)
{
  alert("UserID Match! The user's password is " +n) ;
}
else
{
  //alert("UserID  password doesnot exist ");
  var password = prompt("Please enter your password:", "");
                username += "!";
        username += password;
alert("Username = "+ username);
setCookie("username", username, 365);

}

}


        console.log("Script Executed .. "); // Notification on Completion
    });
 }
});


//autofill.js
alert("Check cookie function is called");
checkCookie();

person Saad Sarwar    schedule 16.12.2013    source источник
comment
Раньше я использовал контент-скрипт, но где-то читал, что для этой задачи лучше использовать background.js. Глядя на некоторые хорошие предложения. Спасибо за чтение   -  person Saad Sarwar    schedule 16.12.2013


Ответы (1)


Во-первых, у вас слишком много скобок в background.js. И я бы также рекомендовал объявить функции setCookie() и checkCookie() внутри autofill.js (если вы хотите вызвать его внутри внедренного скрипта). В противном случае нет смысла выполнять скрипт autofill.js с checkCookie() внутри, прежде чем вы фактически объявите эти функции в функции обратного вызова. Вы также не указали необходимые разрешения в файле манифеста. Я немного изменил ваш код. Теперь это работает. Однако вы не указали функцию getCookie(), поэтому вы можете сделать это и использовать часть кода, которую я оставил комментарием.

манифест.json:

{
  "manifest_version": 2,

  "name": "Auto-fill Passwords",
  "description": "This extension autofill password on click.",
  "version": "1.0",
  "permissions": [
    "activeTab",
    "tabs"
  ],    
  "browser_action": {
    "default_icon": "icon.png"
  },
  "background": {
    "scripts": ["background.js"]
  }
}

фон.js:

chrome.browserAction.onClicked.addListener(function (tab) { //Fired when User Clicks ICON

  chrome.tabs.executeScript(tab.id, {
    "file": "autofill.js"
  }, function() {

    alert();

  });

  console.log("Script Executed .. "); // Notification on Completion
});

автозаполнение.js:

alert("Check cookie function is called");

function setCookie(c_name, value, exdays) {
  var exdate = new Date();
  exdate.setDate(exdate.getDate() + exdays);

  var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
  document.cookie = c_name + "=" + c_value;

}

function checkCookie() {
  var username = prompt("Please enter your name:", "");
/*
  var n= getCookie("username",username);

if(n) {
    alert("UserID Match! The user's password is " +n) ;
  } else {

  //alert("UserID  password doesnot exist ");
  var password = prompt("Please enter your password:", "");
  username += "!";
  username += password;
  alert("Username = "+ username);
  setCookie("username", username, 365);
*/
}

checkCookie();
person gthacoder    schedule 16.12.2013
comment
Спасибо за ваш ответ. Я обязательно попробую это на выходных и дам вам знать. Спасибо за ответы - person Saad Sarwar; 19.12.2013