отправить форму через JS - PullRequest
       2

отправить форму через JS

0 голосов
/ 15 октября 2018

Я создал расширение Chrome, которое отправляет форму в GTmetrix.Это HTML-код:

<html>
  <head>
    <title>GTmetrix Analyzer</title>
    <script src="popup.js"></script>
  </head>
  <body>
    <h1>GTmetrix Analyzer</h1>
    <button id="checkPage">Check this page now!</button>
  </body>

</html>

Это JS-файл:

document.addEventListener('DOMContentLoaded', function() {
    console.log("f")

  var checkPageButton = document.getElementById('checkPage');
  checkPageButton.addEventListener('click', function() {
    console.log("f")
    chrome.tabs.getSelected(null, function(tab) {
      d = document;

      var f = d.createElement('form');
      f.action = 'http://gtmetrix.com/analyze.html?bm';
      f.method = 'post';
      var i = d.createElement('input');
      i.type = '';
      i.name = 'url';
      i.value = tab.url;
      f.appendChild(i);
      d.body.appendChild(f);
      f.submit();
      console.log("a")
      console.log(f)

    });

  }, false);
}, false);

Я добавил события console.log, чтобы убедиться, что код выполняется, однако яожидайте, что HTML представит отправленную форму, включая ответ.Проблема заключается в том, что URL-адрес вкладки добавляется в html только при нажатии на кнопку из-за (d.body.appendChild (f);), поэтому я не уверен, почему его не вижу.

1 Ответ

0 голосов
/ 16 октября 2018

Вы можете попробовать этот другой подход d.body.appendchild(f):

document.getElementsByTagName('body')[0].appendChild(f);

или иметь нулевую проверку, как это:

if ( document.body != null )
 { 
    document.body.appendChild(element); 
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...