Пользовательский скрипт в greasemonkey добавляет текст в форму при отправке с помощью ajax - PullRequest
2 голосов
/ 14 марта 2012

Итак, в этом вопросе я объяснил всю мою ситуацию и для экономии места я не собираюсь репостить всю мою ситуацию

Но вот ответ на вопрос, что у меня проблемы с

    function form_submit (event) {

var form, bClickNotSubmit;

if (event  &&  event.type == 'click') {
    bClickNotSubmit = true;
    form            = document.getElementById ('quick_reply_form');
}
else {
    bClickNotSubmit = false;
    form            = event ? event.target : this;
}

var arTextareas = form.getElementsByTagName ('textarea');

for (var i = arTextareas.length - 1; i >= 0; i--) {
    var elmTextarea     = arTextareas[i];
    elmTextarea.value   = "[font=Tahoma][color=white]" + elmTextarea.value + "[/color][/font]";
}

if ( ! bClickNotSubmit ) {
    form._submit();
}
    }

    window.addEventListener ('submit', form_submit, true);
    document.getElementById ('quick_reply_submit').addEventListener ('click', form_submit, true);

    HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit;
    HTMLFormElement.prototype.submit = form_submit;

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

Кто-нибудь знает, как это исправить?

1 Ответ

0 голосов
/ 14 марта 2012

Не проверено, но попробуйте изменить это:

if ( ! bClickNotSubmit ) {
    form._submit();
}


На это:

if ( ! bClickNotSubmit ) {
    form._submit();
}
else {
    event.preventDefault ();
    event.stopPropagation ();
    return false;
}
...