Расширение Chrome - передача переменных из файла HTML в файл .js - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь передать переменную из HTML моего расширения Chrome в мой файл content_script.js.Впервые использую javascript, поэтому я довольно растерялся.Я попробовал несколько вещей, но ни одна из них, кажется, не работает.Вот моя последняя попытка:

popup.html

<html>
<head><title>activity</title></head>
<body>
<input id="email" type="email" placeHolder="Email" /> <br />
<button id="clickactivity">Create Account</button>  <br />
<script src="popup.js"></script>
</body>
</html>

popup.js

function injectTheScript() {
    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
    // query the active tab, which will be only one tab
    //and inject the script in it
    chrome.tabs.executeScript(tabs[0].id, {file: "content_script.js"});
});
}

document.getElementById('clickactivity').addEventListener('click', injectTheScript);

content_script.js

function registerAccount() {
    regEmail = document.getElementById("email");
    document.getElementById("register-email").value=regEmail.value;
}

registerAccount();

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

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

Попробуйте с помощью этого:

popup.js

document.getElementById('clickactivity').onclick = () => {
    chrome.tabs.executeScript({code: `
        var inputToFill = document.getElementById('register-email');
        if (inputToFill) inputToFill.value = '${document.getElementById('email').value}';
    `});
};

Другие опции могут использовать обмен сообщениями или синхронизацию через хранилище .

0 голосов
/ 16 февраля 2019

Переменная документа на странице отличается от переменной во всплывающем окне.Вам нужно передать входное значение электронной почты в функцию executeScript.

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

popup.js

// make sure your popup was loaded
document.addEventListener('DOMContentLoaded', function () {
  document.getElementById('clickactivity').addEventListener('click', function () {
  // if you pass tabId as null, it already gets the active tab from the current window
  // assuming that register-email exists on the page that in you'll insert this script code
    const emailFromPopup = document.getElementById('email').value
    const code = 'document.getElementById("register-email").value =' + `'${emailFromPopup}'`
    chrome.tabs.executeScript(null, { code });
  })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...