проблема при входе на сайт с использованием расширения chrome - PullRequest
0 голосов
/ 06 августа 2020

Я создаю расширение chrome для базовой c функциональности моей учетной записи в социальной сети. Человек создал простое расширение для открытия сайта после нажатия во всплывающем окне. js кнопка отправки, и она сработала хорошо.

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

Я пытаюсь отправить входные значения в форму входа. в консоли, когда я помещаю код document.getElementsByClassName("_2hvTZ pexuQ zyHYP")[0].value = "username";, он показывает значение, которое должно быть установлено в элементе ввода, но когда я нажимаю где-нибудь на веб-странице, оно становится пустым.

Я пробовал много разных кодов и методов, но все В итоге возникла такая же проблема.

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

У меня есть базовые c и промежуточные знания JavaScript, и я могу понимать письменные коды. но это мой первый раз с кодом расширения google chrome. и я плохо понимаю, как все это работает за сценой.

манифест. json

{
  "name": "Test extension",
  "version": "0.0.1",
  "manifest_version": 2,
  "description": "test extension",
  "icons": {
    "16": "icons/icon16.png",
    "48": "icons/icon48.png",
    "128": "icons/icon128.png"
  },
  "background": {
    "page": "src/bg/background.html",
    "persistent": true
  },
  "browser_action": {
    "default_icon": "icons/icon19.png",
    "default_title": "browser action demo",
    "default_popup": "src/browser_action/browser_action.html"
  },
  "permissions": [
    "bookmarks",
    "chrome://favicon/",
    "clipboardRead",
    "clipboardWrite",
    "contentSettings",
    "contextMenus",
    "cookies",
    "tts",
    "ttsEngine",
    "history",
    "idle",
    "management",
    "notifications",
    "tabs",
    "geolocation",
    "https://*/* "
  ],
  "omnibox": {
    "keyword": "test extension"
  },
  "content_scripts": [
    {
      "matches": [
        "https://www.instagram.com/*"
      ],
      "js": [
        "src/inject/inject.js"
      ]
    }
  ]
} 

приложение. js

    document.getElementById("automate-form").onsubmit = (event) => {
  event.preventDefault();
  chrome.tabs.create({ url: "https://www.instagram.com/" });
  chrome.runtime.sendMessage({
    action: 'fillFields'
  });
  console.log("console log");
};

broswer_action. html

<!doctype html>
<style type="text/css">
    #mainPopup {
        padding: 10px;
        height: 200px;
        width: 400px;
        font-family: Helvetica, Ubuntu, Arial, sans-serif;
    }
    h1 {
        font-size: 2em;
    }
</style>

<div id="mainPopup">
<h1>
    instabot
</h1>
<form id="automate-form">
    <input type="text" id="hashtag" placeholder="#hastag">
    <input type="submit" value="start liking">
    <script src="app.js"></script>
</form>
</div>

вводить. js

chrome.extension.sendMessage({}, function(response) {
    var readyStateCheckInterval = setInterval(function() {
        
    if (document.readyState === "complete") {
        clearInterval(readyStateCheckInterval);
        console.log("inject.js console log"); 
        
        chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) {
            if (msg.action === "fillFields") {
                console.log("it works till here");

                setTimeout(() => {
                    document.getElementsByClassName("_2hvTZ pexuQ zyHYP")[0].value = "username";
                    document.getElementsByClassName("_2hvTZ pexuQ zyHYP")[1].value = "password";
                }, 3000);
            }
        });
    }
    }, 10);
});

Пожалуйста, спросите, нужно ли мне предоставить что-нибудь еще. У меня перелом позвоночника, поэтому я не могу часами сидеть за компьютером, поэтому я подумал о том, чтобы практиковать basi c extension.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...