я попробовал следующий код в браузере Firefox, и он работает как положено.
function createModal(buttonBar){
var div = document.createElement("div"),
input = document.createElement("input"),
btn = document.createElement("button");
div.id = "box";
input.type = "text";
btn.type = "button";
btn.innerHTML = "Button";
btn.onclick = function(e){
console.log("I was called");
input.focus();
console.dir(e);
console.trace();
};
div.appendChild(input);
div.appendChild(btn);
return div;
}
setInterval(function () {
var cont = document.querySelector(".wmd-container:not(.processed)"), ul, buttonBar, div;
if (cont && (ul = cont.querySelector(".wmd-button-bar ul"))) {
cont.classList.add("processed");
buttonBar = cont.querySelector("div[id^=wmd-button-bar]");
div = createModal(buttonBar);
buttonBar.appendChild(div);
}
}, 500);
обратите внимание, что я установил btn.type="button";
, это гарантирует, что форма не будет отправлена, а также удалена e.preventDefault();
какКнопка никогда не будет отправлять форму сейчас.
имейте в виду, что по умолчанию, если вы не передаете элемент type
элементу button
, она будет вести себя как кнопка submit
.
также происходило событие MouseClick
, потому что событие щелчка вызывается на кнопках отправки, присутствующих в форме при отправке формы.поскольку у вас была кнопка без атрибута type
, она работала как кнопка отправки.так что событие MouseClick
сработало, когда вы нажали Enter (как отправка формы).
вы можете убедиться в этом, добавив обработчик onclick
из вашего инструмента разработчика браузера к кнопке Save edits
submit инажмите ввод в текстовом поле.