在一个greasemonkey用户脚本中,当使用ajax提交时,会向表单附加文本

时间:2012-03-14 04:21:13

标签: javascript ajax forms submit greasemonkey

所以,在this问题中,我解释了我的整个情况,为了节省空间,我不会重新发布我的整个情况

但是这里是我遇到问题的问题的答案

    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 :(得分:0)

未经测试,但请尝试更改此内容:

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


对此:

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