Я работаю над расширением 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);
}
}