Расширение Chrome прерывается при изменении вкладки - PullRequest
0 голосов
/ 28 ноября 2018

Я работаю над расширением Chrome, которое имитирует нажатие клавиш для отправки формы.Это прекрасно работает, пока я остаюсь на странице и не переключаю вкладки.Когда я переключаю вкладку, форма не заполняется так же.

Что странно, так это то, что это функция replaceCommentHtmlAndSetSender, которая, кажется, не передает информацию должным образом после того, как один комментарий был отправлен и вызвано событие нажатия клавиши.Если я вернусь на страницу, расширение будет работать.

Я попытался просмотреть все события в консоли, используя monitorEvents(window), и они кажутся одинаковыми.Я также попытался добавить событие window.focus() в replaceCommentHtmlAndSetSender без удачи.

Какие события / различия могут привести к такому поведению при выходе из табуляции?

var replaceCommentHtmlAndSetSender = function(reply_link, resp, id) {
  $(document.activeElement).sendkeys("txt")
  setTimeout(function() {
    var str = '<span data-text="true" data-comment-sender="true">txt >/span>'
    $(document.activeElement).replaceWith(str)
  })
  submitComment()
}

var submitComment = function() {
  var foundElementScript = document.createElement("script")
  foundElementScript.textContent = "foundElement()"
  document.head.appendChild(foundElementScript)
  foundElementScript.parentNode.removeChild(foundElementScript)
}

// this script is injected into the page
function foundElement(){
    found=document.querySelectorAll('[data-comment-sender="true"]')[0];
    found.setAttribute("data-comment-sender", "false");
    submitComment(found);
  }
}

function submitComment(element) {
  var event;

  if(document.createEvent) {
    event = document.createEvent("HTMLEvents");
    event.initEvent('keydown', true, true);
  } else {
    event = document.createEventObject();
    event.eventType = 'keydown';
  }

  event.eventName = 'keydown';
  event.keyCode = 13;
  event.which = 13;

  if(document.createEvent) {
    element.dispatchEvent(event);
  } else {
    element.fireEvent("on" + event.eventType, event);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...