Nano Hash - криптовалюты, майнинг, программирование

Расширение Chrome работает только при проверке всплывающего окна

Цель расширения: сохранить имена продавцов eBay, введенные пользователями вручную. Продавец eBay добавляется, когда у нас постоянно возникают проблемы с продуктом (например, дефект, отправлен неправильный товар, проблемы с открытием возврата и т. д.).
Когда на продукте присутствует имя пользователя eBay (сохраненное в расширении). страница, цвет фона страницы несколько раз мигает красным, указывая на то, что вам не следует покупать у этого продавца.

Введите имя пользователя. Нажмите «Установить». После этого имя пользователя будет добавлено в «черный список». Все сохраненные имена пользователей отображаются над полем для ввода текста.

Проблема. Расширение сохранит имя пользователя, только если вы просматриваете всплывающее окно перед взаимодействием с расширением. Вот шаги, которые я временно выполняю...
1. Щелкните правой кнопкой мыши всплывающее окно
2. Нажмите "Проверить всплывающее окно"
3. Введите имя пользователя
4. Нажмите "Установить"
< br>Я в тупике. Приветствуется любая помощь.

manifest.json

{
  "manifest_version": 2,
  "name": "eBay Blacklist",
  "version": "2.0",
  "content_scripts": [
    {
      "matches": [
        "*://*.ebay.com/*"
      ],
      "js": [
        "content.js"
      ]
    }
  ],
  "browser_action": {
    "default_icon": "CLAYTON-emoji.png",
    "default_title": "eBay Blacklist",
    "default_popup": "popup.html"
  },
  "permissions": [
    "storage"
  ]
}


content.js

/*
 *  Finds the username when viewing a product on eBay
 */
var ebayUsername = document.querySelector('#CenterPanel #CenterPanelInternal #RightSummaryPanel .mbg-nw').innerHTML;
console.log(ebayUsername);
/*
 *  The area to alert the user that the username is blacklisted.
 *  Currently flashes the body to whatever color is set on line 28
 */
var ebayun = document.querySelector('#Body');

/*
 *  When a blacklisted username is present on an active listing, the users screen
 *  will flash.
 */
chrome.storage.sync.get("data", function(items) {
  var check = ebayUsername;
  var length = items.data.length;
  for (i = 0; i < length; i++) {
    if (items.data[i] == check) {
      var defaultBgColor = ebayun.style.backgroundColor;
      var counter = 0;
      setInterval(function() {
          if (ebayun.style.backgroundColor == defaultBgColor && counter < 4) {
              ebayun.style.backgroundColor = "#ff3030";
              ebayun.style.transition = "background-color 0.5s ease";
              counter++;
          }
          // After 4 loops of the flashing alert color, flashing stops.
          // The backgroundColor is set to declared color on line 28.
          else if (counter == 4) {
            ebayun.style.backgroundColor = "#ffcccc";
          }
           else {
              ebayun.style.backgroundColor = defaultBgColor;
          }
        }, 400);
    }
  }
});


всплывающее окно.html

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
</head>
<body>
  <div id="data"></div>
  <input type="text" id="text"></input>
  <button id="set">Set</button>

  <br><br>

  <input type="text" id="toDelete"></input>
  <button id="delete">Delete Username</button>

  <br><br><br>

  <button id="clear">Delete All</button>
  <script type="text/javascript" src="popup.js"></script>
</body>
</html>


popup.js

document.body.onload = function() {
  chrome.storage.sync.get("data", function(items) {
    if (!chrome.runtime.error) {
      console.log(items);
      if (items.data == undefined)
        items.data = "";
      document.getElementById("data").innerText = items.data;
    }
  });
}

// DELETES ALL STORED USERNAMES
document.getElementById("clear").onclick = function() {
  chrome.storage.sync.clear(function() {});
  alert("All usernames deleted!");
  window.close();
}
// Deletes one username by choice
document.getElementById("delete").onclick = function() {
  var exists = false;
  var index = 0;
  var indexToDelete;
    chrome.storage.sync.get("data", function(items) {
    var deleteMe = document.getElementById("toDelete").value;
    var length = items.data.length;
    console.log("deleteMe:",deleteMe);
    for (index = 0; index - 1 < length; index++) {
      console.log("Index:", index);
      if (items.data[index] != deleteMe) {
        console.log("Index Data:", items.data[index]);
      }
      if (items.data[index] == deleteMe) {
        console.log("Index Data:", items.data[index]);
        indexToDelete = index;
        exists = true;
      }
    }
    console.log("Exists: ",exists);
    if (exists == true) {
      alert("Username \"" + items.data[indexToDelete] + "\" deleted!");
      items.data.splice(indexToDelete, 1);
      chrome.storage.sync.set({"data" : items.data })
      window.close();
    } else {
      alert("Username not found!");
    }
  });
}

document.getElementById("set").onclick = function() {
  var exists_alert;
  var exists = true;
  chrome.storage.sync.get("data", function(items) {
    if (items.data == undefined) {
      items.data = [document.getElementById("text").value];
      alert('Username added!!!');
      window.close();
    }
    else {
      var check = document.getElementById("text").value;
      var length = items.data.length;
      for (i = 0; i < length; i++) {
        if (items.data[i] == check) {
          exists = true;
        } else {
          exists = false;
        }
      }
      if (exists == false) {
        items.data.push(document.getElementById("text").value);
        alert('Username added!!!');
        window.close();
      }
      if (exists == true) {
        alert('Username already exists!');
      }
    }
    chrome.storage.sync.set({ "data" : items.data }, function() {
    console.log(items.data);
    });
  });
}

  • Привет @clayton, у меня даже такая же проблема, хотя я использую хром в Windows. 05.04.2021

Ответы:


1

Я проверил ваш код в своем браузере, и он устанавливает пользовательский текст без проверки кода.

Можете ли вы проверить еще раз и проверить, ничего ли вы не упустили, или на вашу консоль приходят какие-либо ошибки. Все кажется прекрасным в моем конце

13.01.2018
  • Спасибо за ответ на этот пост. Эта проблема возникает только на компьютерах с macOS. Он отлично работает на ПК. И да, они используют одну и ту же версию Chrome. 28.03.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..