Проблема в заданном значении поля ввода форм Google?

Я сделал расширение Chrome, в котором пользователь сохраняет свои важные ссылки в расширении и вставляет эту ссылку, щелкнув контекстное меню Chrome, но есть ошибка: она не работает для форм Google.

скринкаст

Когда я нажимаю click на кнопке отправки, сайт выдает мне ошибку you missed the field.
В чем причина этой ошибки?

Код сценария с полным содержимым из моего расширения:

var element = null ;

document.addEventListener("contextmenu", function(event){
    element = event.target;
});

var types = [
    "text",
    "url",
    "search",
    "tel",
    "password",
    "email",
    "number",
    "textarea"
];

function getCaretPosition(element){
    var caretPos = 0;

    /* Chrome  and Firefox support */
    if(!document.selection && $.inArray(element.type, types) >= 0){
        /*  element.selectionStart for type email give error because their is a bug in chrome */
        if( element.type == 'email' || element.type == 'number' ){
            caretPos = 0 ;
        }else{
            caretPos = element.selectionStart;
        }
    }
    else {
        /* IE support */
        if(document.selection){
            element.focus();
            var sel = document.selection.createRange();
            sel.moveStart('character', -element.value.length);
            caretPos = sel.text.length;
        }
    }
    return caretPos;
}

$(document).ready(function (){

    chrome.runtime.onMessage.addListener( function (response , sender , sendResponse) {
        var caretposition = getCaretPosition(element);
        var initvalue = element.value ;
        var first_part = initvalue.substr(0, caretposition);
        var last_part = initvalue.substr(caretposition);
        if(element.type == 'email' || element.type =='number'){
            element.value = response.requested_link + initvalue;
        } else {
            var selected_text = element.value.substring(element.selectionStart, element.selectionEnd);
            if ( selected_text != ''){
                last_part = initvalue.substr(caretposition + selected_text.length);
            }
            element.value = first_part + response.requested_link + last_part;
        }
    });

});

comment
Похоже, вы сбрасываете ввод непосредственно перед отправкой формы. Вот как я отлаживаю изображение... Мы могли бы отфотошопить его, если хотите, но я предполагаю, что вместо этого вы ищете соответствующий код. Не правда ли?!...   -  person A. Wolff    schedule 06.09.2016
comment
@A.Wolff, вы можете увидеть мой скрипт контента здесь.   -  person    schedule 06.09.2016
comment
@A.Wolff A.Wolff Я ничего не делаю после установки значения атрибута поля ввода.   -  person    schedule 06.09.2016
comment
и я просто хочу знать, в чем причина ошибки.   -  person    schedule 06.09.2016
comment
@wOxxOm посмотри, что я получу .   -  person    schedule 06.09.2016
comment
Хорошо, я вижу. Затем, возможно, сайт проверяет наличие любого события клавиатуры, которое вы не отправляете. В этом случае попробуйте отправить клавишу Enter (есть много примеров, которые вы можете найти в Google, если это необходимо).   -  person wOxxOm    schedule 06.09.2016
comment
@wOxxOm большое спасибо, теперь все работает правильно.   -  person    schedule 06.09.2016


Ответы (1)


Ошибка: я не отправляю событие нажатия клавиши, когда мое расширение вставляет что-то в поле ввода/текстовое поле.

Soul: я решил эту ошибку с помощью sendkeyevent , вы можете прочитать о том, как вызвать событие sendkey здесь . .

person Community    schedule 07.09.2016